我試圖將我想要的結果從被呼叫的 PowerShell 腳本發送回呼叫腳本。
所以腳本 testcaller.ps1
$Result = Invoke-Expression "$PSScriptRoot\testcalled"
$LogMessage = "TestCalled ended with Result $Result"
Write-Output $LogMessage
呼叫腳本 testcalled.ps1
$TestMessage = "this is a test"
Write-Output $TestMessage
$Level = 1
exit $Level
運行時它會產生這個......
TestCalled 以結果結束,這是一個測驗 0
我有兩個問題。我將 testmessage 傳遞回我的呼叫腳本,而過去的級別是 0,而它應該是 1。我想看到的是......
TestCalled 以結果 1 結束
uj5u.com熱心網友回復:
給定的 testcalled.ps1
'hello world'
function Say-Hello { 'hello!' }
exit 1
如果你想從另一個腳本運行這個外部腳本,你可以dot source:
腳本創建的函式、變數、別名和驅動器是在您作業的范圍內創建的。腳本運行后,您可以使用創建的專案并在會話中訪問它們的值。
$Result = . "$PSScriptRoot\testcalled.ps1"
$Result # => hello world
Say-Hello # => 'hello!'
$LASTEXITCODE # => 1
或使用call operator &:
呼叫運算子在子作用域中執行。
這意味著,函式,變數,別名和驅動器將無法提供在當前范圍。
$Result = & "$PSScriptRoot\testcalled.ps1"
$Result # => hello world
Say-Hello # => SayHello: The term 'SayHello' is not recognized as a name of a cmdlet, function....
$LASTEXITCODE # => 1
如您所見,在這兩種情況下,您都可以使用自動變數$LASTEXITCODE。
最后但并非最不重要的是,不建議使用Invoke-Expression. 請參閱https://devblogs.microsoft.com/powershell/invoke-expression-thinked-harmful/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362440.html
標籤:电源外壳
