1
花了我整整一個早上試圖找到我的返回值出現亂碼的位置。現在我終於找到了地方,但我仍然不知道爲什麼。功能如下:包含進程的函數返回一個亂碼值
function Run-RemoteCommand {
param(...) # params are $Remote (host) $Command $Credentials $Quiet (optional switch)
if($Quiet) {
$Process = New-Object System.Diagnostics.Process
$Process.StartInfo.UseShellExecute=$false
$Process.StartInfo.Domain=$Credentials.GetNetworkCredential().Domain
$Process.StartInfo.UserName=$Credentials.GetNetworkCredential().UserName
$Process.StartInfo.Password=$Credentials.Password
$Process.StartInfo.WindowStyle="Hidden"
$Process.StartInfo.FileName=$PSExec
[email protected]("/acceptEULA",$Remote,"-s",$Command)
$Process.Start()
$Process.WaitForExit()
$result = $Process.ExitCode
return $result
} else {
...
}
}
有什麼奇怪的是,我可以在一個調試器,通過這一步,看着一切工作正常。該命令運行時,$ result被返回代碼填充,但調用函數接收True後附加到返回代碼(例如True0成功)。我甚至試圖覆蓋返回值,只是說
return "false"
調用函數收到「Truefalse」。我只能說,它與$ Process運行相關。如果我註釋掉$ Process.Start(),則返回代碼正常工作。有人請保存我的理智。
謝謝基思,現在我不必把所有的錢花在羅迦身上,以挽救我即將退出的頭髮!在這個環節也有很好的閱讀。尤其是在這裏應用並開始的部分「我在PowerShell新聞組上一次又一次地看到了這個問題......」 – ASTX813 2012-01-13 21:41:58