2017-12-18 14 views
0

引数を使用してPowerShell-Scriptから「PS App Deployment Toolkit」パッケージ(Link)を呼び出したいとします。Powershell Start-Process with Splatting

上記の「PS App Deployment Toolkit」-packageはpowershell-scriptで、パラメータで呼び出す必要があります。 (.ps1から.ps1を呼び出します)

パラメータにスプラットを使用します。
スクリプトが終了するのを待っています。
スクリプトから終了コードを取得したいと考えています。ここで

が動作していない私のコードです:

$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 

でしたあなたはしてくださいこの仕事を手助けしてくれますか?

ありがとうございました!

+0

これはあなたの例では全くスプラットしていません。 '@ PSADToolKitParameters'を取り除くと、 – TheIncorrigible1

+0

...と@ TheIncorrigible1は正しく動作します。あなたの例はスプラットを含んでいません。スプラットを使用する方法については私の答えを参照してください。 –

答えて

1

私はあなたがとても大変なことをする必要はないと思います。 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)。

+0

ちょっとメモ、彼はスクリプトの終了コードをキャプチャしたいと思っています – TheIncorrigible1

+0

はい、スクリプトは正しく呼び出されますが、私は終了コードを取得しません... – Walhalla

+0

@Walhalla '$ Var =&.. '$ Var'変数にスクリプトが返すものを取得する必要があります。 – TheIncorrigible1