远程计算机上的Powershell脚本未作为计划任务运行

时间:2015-08-13 12:47:00

标签: windows powershell active-directory server scheduled-tasks

我的域上有一个存储在Active Directory服务器上的脚本。域上的每台机器都有一个任务,当被触发时,调用该脚本来运行。

从AD服务器运行任务有效。从另一台计算机运行任务不起作用。但是,在远程计算机上手动运行从cmd触发的命令有效吗?

任何人都可以对此有所启发。基本上我称它为这样,以便触发器设置为......

操作:PowerShell.exe

参数:-noprofile -ExecutionPolicy Bypass -File“\\<> NameOfADServer<> \ C $ \ Tasks \ script.ps1”“Argument 1”“Argument 2”

2 个答案:

答案 0 :(得分:2)

以SYSTEM身份运行可能是你的问题 - 它无法在PC运行之外进行任何访问。

手动运行时,您将拥有访问权限。

答案 1 :(得分:2)

这里有几个问题。

  1. 您正在以本地SYSTEM帐户运行任务。 SYSTEM通常无法访问任何网络资源。
  2. 您正在使用管理共享(\\<servername>\C$)来共享脚本。只有具有管理员访问权限的用户才能访问管理共享。管理共享受到设计的严格限制,您无法修改它们的访问权限。
  3. 我的猜测是,手动运行该脚本是因为当您这样做时,它会使用当前用户的凭据进行网络访问,但请不要引用我的话。

    变化最小的最简单的解决方案是:

    1. 在Active Directory中创建一个组。添加计算机帐户,或者最好是包含您希望能够将脚本运行到此新组的计算机帐户的组。如果您真的希望域中任何计算机上的任何SYSTEM帐户都能够运行该脚本,您可以添加&#34;域计算机&#34;小组加入小组。
    2. 在服务器上创建一个文件夹。将脚本放在文件夹中。请勿在此文件夹中放置任何您不希望用户阅读的内容。分配&#34; Read&#34;对上面创建的组的NTFS权限。
    3. 分享文件夹。授予你刚刚创建的小组&#34;完全控制&#34;共享访问权限如果需要,可以通过在名称末尾添加美元符号使其成为隐藏共享。
    4. 更新您的预定任务以使用\\<servername>\<sharename>\script.ps1
    5. 这几乎肯定不是实现您实际尝试的最佳方法,但这可能是使用SYSTEM帐户在网络共享上运行脚本的计划任务的最佳方法。