我正在尝试将 Powershell 脚本作为SYSTEM帐户作为计划任务运行,并且该任务运行正常,但该脚本运行不正确,因为它没有加载一些以 SYSTEM 身份运行时所需的 Citrix Powershell 管理单元,但运行正常作为我的用户帐户。
该脚本会检查加载 Citrix 管理单元,但这些管理单元在作为SYSTEM.
if ((Get-PSSnapin "Citrix.Common.Commands" -EA silentlycontinue) -eq $null) {
try { Add-PSSnapin Citrix.* -ErrorAction Stop }
catch { write-error "Error Citrix.* Powershell snapin"; Return }
Run Code Online (Sandbox Code Playgroud)
我需要做什么特别的事情才能正确加载这些管理单元吗?我打电话喜欢这个剧本,如果它事项:powershell.exe -executionpolicy bypass -file C:\path\to\script.ps1。
编辑:从运行 (Get-PSSnapin -registered).countSYSTEM和我的用户帐户,我可以看到管理单元已正确加载,但仍然无法弄清楚为什么脚本的行为不同。
操作系统是Server 2016,版本1607,这是脚本:https : //gist.github.com/4oo4/85cec464e123d7f2793745e662d6e7ab
这不是为什么您的特定脚本不能在 SYSTEM 帐户下工作的答案,而是解释了如何对 SYSTEM 帐户下的(或任何其他)PowerShell 脚本进行故障排除。
给一个人一条鱼,你就能养活他一天。教一个人钓鱼,你养活他一辈子。
整个事情是,您实际上可以在您可能不知道的 SYSTEM 帐户下打开交互式 PowerShell 命令提示符。
有几种方法可以启动交互式 PowerShell 命令提示符,但最简单的方法可能是使用PsExec。
使用PsExec
PSTools.zip并复制PsExec到您的可执行路径中PowerShell 以管理员身份运行(接受User AccountControl提示).\PsExec -i -s -d PowerShellPowerShell将打开一个新的命令窗口:
WhoAmI以确认当前帐户) 从这里您可以对特定脚本进行故障排除:
如果脚本在 SYSTEM 窗口中运行得很好,那么我会检查以下文件中的任何错误Task Scheduler:
Task Scheduler Local-Task Scheduler Library在左窗格中Display All Task History在右侧窗格中有Enabled)history选项卡中的事件| 归档时间: |
|
| 查看次数: |
2221 次 |
| 最近记录: |