从SCCM部署后批处理文件不会运行



我有一个批处理文件,它使用gpresult/v并将输出保存在文本文件中,然后将该文本文件复制到共享文件夹中。当我在本地机器上运行时,这个批处理运行得很好,但一旦我通过SCCM部署它,它就会说无法打开文件,错误代码为4。我不知道文件里出了什么问题。

代码是这样的:

@回波关闭

gpresult/v>%computername%.txt

xcopy%computername%.txt\某个路径

错误4为"系统无法打开文件。",就好像路径无效或open()由于其他原因失败一样。

  • 您知道程序运行在哪个目录(CWD)中吗
    这就是gpresult的结果所在(如果输出重定向成功)
  • CCD_ 2不会为SYSTEM用户产生有意义的用户级数据
    也许您应该使用gpresult /v scope computer
  • 当您只复制一个文件时,为什么要使用xcopy?如果您正在复制目录,xcopy实际上只具有附加值(相对于copy)
    xcopy的行为会根据您指定目标的方式而变化。如果目标以目录分隔符(反斜杠)结尾,xcopy会将其视为目录。如果没有,并且目标也不存在,xcopy会询问您该做什么,这会导致自动化流程无限期暂停,等待用户输入

SCCM程序以"NT Authority\SYSTEM"运行

当SCCM(2007)运行程序时,该程序不会以常规用户身份运行。它以最高权限用户SYSTEM的身份运行。

此帐户不是常规帐户,并且对于常规用户而言,存在和可预测的许多设置和环境变量与SYSTEM不同或不存在。SYSTEM帐户配置文件的一个特别令人沮丧的"特性"是,它位于%WINDIR%System32下,因此每当您引用与配置文件相关的任何内容时,它都会受到文件系统重定向的影响。

试试这个:使用psexec -s(sysinternals)获得作为SYSTEM帐户的shell访问权限,并在该环境中运行该命令以查看其行为。这是我们所能接近的环境,比如SCCM程序运行的环境。

当SCCM运行该命令时,CWD可能位于%WINDIR%SysWOW64CCM下的某个位置,并且可以用32位版本的CMD.EXE.调用

我有一个类似的问题。所以我有一个可以运行的卸载蝙蝠。由于供应商卸载,它会导致windows资源管理器UI强制关闭。因此,为了急于解决这个问题,我添加了一个打开explorer.exe的调用。正如有人向我指出的那样,这是有问题的。事实上,他一说,我就清楚地知道他在说什么,以及他的声明要去哪里。调用explorer.exe是可以的,只是bat是在系统上下文下运行的,而不是在用户的上下文下运行,所以当explorer重新启动时,它将以系统桌面配置文件而不是用户的配置文件的名义启动。我知道有一种方法仍然可以在系统的伪装下运行,但可以在当前登录的用户配置文件下重新启动资源管理器。

相关内容

  • 没有找到相关文章

最新更新