SCCM OSD问题

我在OSD任务序列中有“运行PowerShell脚本”步骤。

该脚本将一些文件复制到一个位置,然后运行一个可执行文件。

如果我使用ROBOCOPY复制文件,我得到一个退出代码1(文件复制正常),并且可执行文件被触发,做它所需要的并且快乐地退出。

如果我使用XCOPY(外部调用)或Copy-Item(PS Cmdlet) – 文件仍然复制并放置在正确的位置,则用代码0退出,但可执行文件不会启动,并且不会执行至。

有任何想法吗?

示例代码(不工作:)

if (!(Test-Path "C:\Installs\sx1install")){New-Item -ItemType Directory -Path "C:\Installs\sx1install" -Force} Copy-Item . C:\Installs\sx1install -Recurse -Force .\setup.exe /s /f1"c:\installs\sx1install\setup.iss" 

加工:

 robocopy .\ C:\Installs\sx1install /E /R:0 /W:0 .\setup.exe /s /f1"c:\installs\sx1install\setup.iss" 

在这两种情况下,C:\ Installs \ sx1install文件夹都会创build完整填充所有必需的文件和文件夹(包括子文件夹等) – 但setup.exe在第一个示例上不起作用。

robocopy是什么使这个工作/不工作?

非工作脚本通过对脚本包的位置执行一个设置位置然后执行,在Windows中完美工作。

我们需要尝试find一个方法来获得这个执行,并返回0作为返回码1popup任务序列。 如果可执行文件返回1,我们需要停止TS,因为这是我们构build的关键部分,所以只要将成功代码设置为1或继续或错误不是一个select。

SCCM 2012 R2 CU3 // MDT 2012 //通过MDT OSD部署8.1 Pro TS

如果事情与Robocopy一起工作,为什么你担心Xcopy,为什么不使用那个工程?

另外,为什么要手动复制文件,而不是只创build一个包或应用程序,指定这些文件的原始位置作为源,然后让任务序列处理复制文件以准备安装? 如果您担心指定setup.iss安装自动化文件的完整(非相对)path,那么只需在您的setup.exe的命令行中指定“-s”,它应该告诉它寻找一个“setup.iss “文件在同一个文件夹中,根本不需要指定path或文件名(因为它们都被称为”setup。[exe | iss]“,这将使它:

 .\setup.exe -s 

否则,smsts.log,AppEnforce.log,execmgr.log文件在失败时会说些什么?