我正在尝试使用PowerShell在远程机器上安装服务。
到目前为止,我有以下代码:
Invoke-Command -ComputerName $remoteComputerName -ScriptBlock {
param($password=$password,$username=$username)
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential ($username, $secpasswd)
New-Service -Name "XXX" -BinaryPathName "c:\XXX.exe" -DisplayName "XXX XXX XXX" -Description "XXXXXX." -Credential $credentials -ErrorVariable errortext
Write-Host("Error in: " + $errortext)
} -ArgumentList $password,$username -ErrorVariable errortext
Write-Host("Error out: " + $errortext)
当执行New-Service时出现错误,$errortext ErrorVariable会在ScriptBlock中正确设置,因为文本:"Error in:" 显示了错误信息。Invoke-Command的ErrorVariable没有被设置(这是我所期望的)。
我的问题是:
是否有可能将Invoke-Command的ErrorVariable设置为我在ScriptBlock中得到的错误信息?
我知道我也可以使用InstalUtil、WMI和SC来安装服务,但目前这不相关。
Stop
来代替数字1作为-ErrorAction参数,这样更加清晰易懂。 - Keith Hill