当前位置: 首页 > 知识库问答 >
问题:

计划任务Powershell脚本-作为用户帐户正常运行,但不作为系统运行

葛玉堂
2023-03-14

我尝试将Powershell脚本作为SYSTEM帐户作为计划任务运行,该任务运行正常,但该脚本运行不正确,因为它没有加载作为SYSTEM运行时所需的一些Citrix Powershell管理单元,而是作为我的用户帐户运行OK。

该脚本会执行检查以加载 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 }

我需要做什么特殊的事情才能正确加载这些管理单元 如果重要的话,我会这样调用脚本:<code>powershell。exe-executionpolicy旁路-文件C:\path\to\script.ps1。

编辑:从运行中(Get-PSSnapin -registered)。作为< code>SYSTEM和我的用户帐户,我可以看到管理单元被正确加载,但仍然不明白为什么脚本的行为不同。

OS是Server 2016,版本1607,这个是脚本:https://gist . github . com/4oo 4/85 CEC 464 e 123 d7f 2793745 e 662 d6e 7 ab

共有1个答案

邓德厚
2023-03-14

这不是为什么您的特定脚本在系统帐户下无法工作的答案,而是解释了如何在系统帐户下对您的(或任何其他)PowerShell脚本进行故障诊断。

给一个人一条鱼,你喂他一天。教一个人钓鱼,你喂他一辈子。

围绕这一点的整个事情是,您实际上可以在SYSTEM帐户下打开交互式PowerShell命令提示符,但您可能不知道。

有几种方法可以启动交互式PowerShell命令提示符,但最简单的方法可能是使用PsExec。

使用PsExec

  • 下载PsTools
  • 提取PSTools.zip并将PsExec复制到您的可执行路径
  • 以管理员身份运行PowerShell(接受User Account tControl提示)
  • 在PowerShell管理员窗口中,给出命令:。\PsExec-i-s-d PowerShell
  • 将打开一个新的PowerShell命令窗口:
    PowerShell as SYSTEM
    (键入WhoAmI以确认当前帐户)

在这里,您可以对特定脚本进行故障排除:

  • 运行特定脚本时是否有任何错误?
  • 它在特定命令下是挂起还是崩溃?
  • 与在用户帐户下运行它有什么区别吗?

如果脚本在SYSTEM窗口中运行良好,那么我会检查任务计划程序中是否有任何错误:

  • 在左窗格中选择任务计划程序本地 - 任务计划程序库
  • 在顶部中间窗格中选择您的任务
  • (确保已启用右窗格中的“显示所有任务历史记录
  • 在中间的底部窗格中,检查历史记录选项卡中的事件
 类似资料:
  • 我的域控制器上有一个小脚本,它被设置为通过SMTP向我发送有关最新安全事件4740的电子邮件。 手动执行时,脚本将按预期运行;但是,当设置为通过计划任务运行时,尽管它显示已执行,但没有任何反应(没有电子邮件)。 脚本如下: 计划任务设置如下: 我还尝试了以下方法: 根据任务历史记录:任务开始、行动开始、创建任务流程、行动完成、任务完成。我浏览了网站上一些有着相同“问题”的不同链接,但它们似乎都有一

  • > 我需要在执行前一个任务后以不同的延迟一个接一个地运行计划的任务。示例。有一个任务列表和延迟列表。 现在我需要运行task1通过100ms,task2在task1之后通过9ms,task3在task2之后通过22ms等等。 我正在使用javafx。任务可以使用一些UI更新方法,例如更改节点位置。这迫使我使用平台。runLater()方法,因为如果不这样做,则会出现异常“Not on FX app

  • 问题内容: 我有一个长期运行的System Groovy脚本,它可以启动数以万计的其他构建。为了不使构建队列过长(这将使UI无法使用),它将监视构建队列的长度。如果构建队列长于给定的阈值,它将不会启动任何新的构建并休眠一分钟。 问题是,此脚本无法响应用户的kill操作。当用户单击UI上的“杀死此构建”按钮时,什么也没有发生。我想知道是否有一种方法可以让系统Groovy脚本检查是否应该终止当前版本,

  • 问题内容: 我想在CENTOS服务器中运行python脚本: 我正在使用它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行? 问题答案: 我使用此代码来守护我的应用程序。它允许您使用以下命令来编写脚本。 除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。 这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从内部的函数中调用

  • 我有一个包含4个命令的批处理脚本,如下所示 当我双击批处理文件时,它运行得很好。当我尝试从命令提示符运行批处理文件时,它没有看到要删除的. csv文件,我不确定这是为什么,但我认为这对我的目的并不重要。 当我从task scheduler手动运行任务时,它会截断数据库中的表并删除现有的csv文件,但没有创建新文件,这使我相信它会卡在.vbs文件上。 我试着用。vbs脚本,并将路径传递给。xls和。

  • 我正在尝试安排在Windows Server 2012R2上运行PowerShell Core 7.2脚本。脚本从服务器手动运行,没有任何错误,任务调度程序运行任务。在历史记录中,我可以看到< code >任务已完成 问题是脚本未执行。它应该移动文件并且文件不移动,这意味着脚本未执行。 所选任务计划程序的设置如下所示: 常规-无论用户是否登录,都以最高权限运行。< br >操作- 我真的不知道这里