Powershell开始流程与Splatting

时间:2017-12-18 13:24:02

标签: powershell

我想从带有参数的PowerShell脚本中调用“PS App Deployment Toolkit”-package(Link)。

上面提到的“PS App Deployment Toolkit”-package是一个powershell脚本,我想用参数调用它。 (从.ps1调用.ps1)

我想使用splatting参数。
我想等待剧本结束 我想从脚本中获取退出代码。

这是我的代码,它不起作用:

$InstallStatus = Start-Process -FilePath "PowerShell.exe" -ArgumentList "$PSADToolKitInstallWrapper","-DeploymentType Install -DeployMode Silent -AllowRebootPassThru -TerminalServerMode" -Wait -PassThru

此行可以正常工作,但我想在上面的示例中设置参数:

maplistner

你可以帮助我让这个工作吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你不需要这么努力。为什么要从PowerShell脚本中运行powershell.exe?您已经在运行PowerShell了。只需运行您想要的命令行:

$PSADToolKitParameters = @{
  "DeploymentType" = "Uninstall"
  "DeployMode" = "Interactive"
  "AllowRebootPassThru" = $True
  "TerminalServerMode" = $False
  "DisableLogging" = $False
}
C:\Temp\MyPackage\PS-AppDeploy.ps1 @PSADToolKitParameters

如果要运行的脚本的路径和/或文件名包含空格,则使用调用运算符(&)调用它并引用文件名;例如:

& "C:\Temp\My Package\PS-AppDeploy.ps1" @PSADToolKitParameters

检查脚本的结果取决于脚本返回的内容。如果它返回一个输出对象,那么你可以简单地分配它:

$output = C:\Temp\MyPackage\PS-AppDeploy.ps1 ...

如果脚本运行设置退出代码的可执行文件,则检查$LASTEXITCODE变量的值(这类似于%ERRORLEVEL%中的cmd.exe动态变量)。