[英]Powershell Start-Process with Splatting
我想从带有参数的PowerShell脚本中调用“ PS App Deployment Toolkit”程序包( Link )。
提到的“ PS App Deployment Toolkit”程序包是一个powershell脚本,我想使用参数进行调用。 (从.ps1调用.ps1)
我想对参数使用splatting。
我要等待脚本结束。
我想从脚本中获取退出代码。
这是我的代码,不起作用:
$PSADToolKitInstallWrapper = "C:\Temp\MyPackage\PS-AppDeploy.ps1"
$PSADToolKitParameters = @{
"DeploymentType" = "Uninstall";
"DeployMode" = "Interactive";
"AllowRebootPassThru" = $True;
"TerminalServerMode" = $False;
"DisableLogging" = $False;
}
$InstallStatus = Start-Process -FilePath "PowerShell.exe" -ArgumentList $PSADToolKitInstallWrapper @PSADToolKitParameters -Wait -PassThru
Write-Host "Exit-Code: $( $InstallStatus.ExitCode )"
这条线可以正常工作,但是我想像上面的例子一样设置参数:
$InstallStatus = Start-Process -FilePath "PowerShell.exe" -ArgumentList "$PSADToolKitInstallWrapper","-DeploymentType Install -DeployMode Silent -AllowRebootPassThru -TerminalServerMode" -Wait -PassThru
您能帮我解决这个问题吗?
谢谢!
我认为您不需要这么努力。 为什么要从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
变量的值(这类似于cmd.exe
的%ERRORLEVEL%
动态变量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.