gpt4 book ai didi

powershell - 在 Invoke-Command Cmdlet 中处理 ScriptBlock 中的错误

转载 作者:行者123 更新时间:2023-12-04 01:30:42 24 4
gpt4 key购买 nike

我正在尝试使用 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 来安装该服务,但目前这无关紧要。

最佳答案

不,您无法获得 Errorvariable来自 Invoke-Command调用设置与脚本块中的相同。

但是,如果您的目标是“检测和处理脚本块中的错误,并将错误返回到 Invoke-Command 调用方的上下文中”,那么只需手动执行:

$results = Invoke-Command -ComputerName server.contoso.com -ScriptBlock {
try
{
New-Service -ErrorAction 1
}
catch
{
<log to file, do cleanup, etc>
return $_
}
<do stuff that should only execute when there are no failures>
}
$results现在包含错误信息。

关于powershell - 在 Invoke-Command Cmdlet 中处理 ScriptBlock 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com