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

时间:2014-01-15 11:53:07

标签: batch-file sccm sccm-2007

我有一个批处理文件,它使用gpresult / v并将输出保存在文本文件中,并将该文本文件复制到共享文件夹。当我在我的本地机器上运行时这个批处理工作完全正常但是一旦我通过SCCM部署它就说无法打开错误代码4的文件。我不知道文件中有什么问题。

代码是这样的:

@echo off

gpresult / v>%computername%。。tt

xcopy%computername%。txt \ some path

2 个答案:

答案 0 :(得分:1)

错误4是“系统无法打开文件。”,好像路径无效或open()由于其他原因而失败。

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

SCCM程序作为'NT Authority \ SYSTEM'

运行

当SCCM(2007)运行程序时,程序不会以普通用户身份运行。它作为最高权限用户(类型),SYSTEM。

运行

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

尝试此操作:使用psexec -ssysinternals)获取作为SYSTEM帐户的shell访问权限,并在该环境中运行命令以查看其行为方式。这就像我们可以进入一个SCCM程序运行的环境一样接近。

当SCCM运行命令时,CWD可能位于%WINDIR%\SysWOW64\CCM\之下,可以使用32位版本的CMD.EXE调用。

答案 1 :(得分:0)

我对类似的事情有疑问。所以我有一个运行的卸载蝙蝠。由于供应商卸载它导致Windows资源管理器UI的强制关闭。所以我急忙解决这个问题,我添加了一个打开explorer.exe的调用。有人向我指出,这有一个问题。实际上,只要他说我确切地知道他在说什么,以及他的陈述在哪里。调用explorer.exe会很好,除了bat在系统上下文而不是用户下运行,因此当重新启动资源管理器时,它将以系统桌面配置文件而非用户的名义开始。我知道有办法仍然在系统的幌子下运行,但在当前登录用户的个人资料下重新启动资源管理器。