计划任务的Powershell脚本

所以我试图按计划运行PowerShell脚本。 每天早上六点,重复一天中的每一个小时。 这是脚本本身:

Get-Content C:\Users\administrator\Desktop\users.txt | ForEach-Object { Set-AdUser -Identity $_ -LogOnWorkstations $null } 

现在,当我自己执行脚本时,脚本完美无瑕。 但是好像这个脚本在执行的时候不能正常运行。 我的想法是,执行策略不断询问它是否安全地运行脚本,然后再运行它。 如果其他人同意这可能是脚本无法自行启动的原因,请围绕这个障碍提供一个解决scheme吗?

这个工作在哪里? 在GPO上还是在本地机器上? 脚本和机器应该运行在同一个networking上吗?

尝试像这样安排(如果你还没有这样做):

 Programm/Script: PowerShell.exe Arguments: -ExecutionPolicy Bypass -Command "& 'FilePathToScript.ps1'" 

编辑:另外,我不太确定是否必须在要运行该脚本的工作站上安装AD-PS-Module,因为可能无法find命令Set-ADUser

执行策略很容易检查,当你正常login时,你可以将它作为脚本运行吗? 如果不是那么'set-execution policy remotesigned',从一个pipe理的powershell会话运行将为全局的hte服务器设置。

正在执行计划任务的用户需要对正在运行的计算机具有“login为批处理”权限。 鉴于这是一个AD模块,我假设你正在域控制器上运行这种情况,在这种情况下,您将需要修改默认域控制器GPO以将正确的“以批处理方式login”分配给用户。 如果这是在RSAT的工作站或成员服务器上运行,则需要使用本地安全策略来分配此权限(SecPol.MSC)。

正在运行该脚本的用户需要有权访问Active Directory以达到修改用户对象的级别。 通常,如果您login到域控制器,您将有域pipe理员巫婆会给你这个权利,但如果你已经创build了一个服务帐户,它可能没有正确的权限。 您需要调查所需的权限级别,并将其应用于您的AD域的相关区域。 小心这个。

我敢打赌,这是批量login的权利,它抓住了我几次,并不明显,当它阻止你。

如果您需要进一步调查计划任务历史logging选项卡可以帮助,事件查看器可以。

执行政策在机器范围内。 如果它以交互方式工作,那么按计划任务运行时似乎不太可能会出现问题。

你在这里失踪的是信息。 你不会用两个命令获取任何信息,也不会logging。 而且您没有加载Active Directory模块,因此可能会解释一些事情。

以下是如何将PowerShell脚本作为计划任务启动并logging输出的示例:

 Program/Script: PowerShell Arguments: -NonInteractive -WindowStyle minimized -c "powershell -c C:\Apps\AppName\SomeScript.ps1 -verbose > C:\Apps\AppName\Logs\SomeScript.log 2>&1" 

以下是加载Active Directory模块的示例:

 $startTime = Get-Date $logDateFormat = "yyyy-MM-dd HH:mm:ss" [console]::WriteLine("{0} Loading Active Directory Module", [datetime]::Now.ToString($logDateFormat)) import-module ActiveDirectory Get-Content C:\Users\administrator\Desktop\users.txt | ForEach-Object { [console]::WriteLine("{0} Clearing workstations for user: {1}", [datetime]::Now.ToString($logDateFormat), $_) Set-AdUser -Identity $_ -LogOnWorkstations $null } $endTime = Get-Date [console]::WriteLine("{0} Finished. Time Required: {1}", [datetime]::Now.ToString($logDateFormat), $endTime.Subtract($startTime).ToString()) 

这将是像这样的程序/脚本Powershell.exe参数和path

  -ExecutionPolicy Bypass -File "C:\alert.ps1" 

在这里输入图像说明