我在 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 文件夹都会创建,并完全填充所有必需的文件和文件夹(包括子文件夹等) - 但 setup.exe 在第一个示例中不起作用。
robocopy 是什么使这项工作/不工作?
通过对脚本包的位置设置位置然后执行,非工作脚本在 Windows 中完美运行。
我们需要尝试找到一种方法来执行它并返回 0 作为返回码 1 会破坏任务序列。如果可执行文件返回 1,我们需要停止 TS,因为这是我们构建的关键部分,因此仅将成功代码设置为 1 或继续或错误不是一个选择。
SCCM 2012 R2 CU3 // MDT 2012 // 通过 MDT OSD TS 部署 8.1 Pro