基本上就是我想要做的是:調用多個PowerShell命令在同一範圍
步驟1)調用whatever.ps1(或腳本塊),劇本是這樣的: $你好=「世界「
步驟2)調用獲取變量-name你好
步驟3)檢索的輸出獲取變量
我無法弄清楚如何做到這一點乾淨,因爲我每次調用創建一個不同範圍的腳本塊。
基本上就是我想要做的是:調用多個PowerShell命令在同一範圍
步驟1)調用whatever.ps1(或腳本塊),劇本是這樣的: $你好=「世界「
步驟2)調用獲取變量-name你好
步驟3)檢索的輸出獲取變量
我無法弄清楚如何做到這一點乾淨,因爲我每次調用創建一個不同範圍的腳本塊。
您有幾個選項。最簡單的方法是更改腳本,如果可以的話:
$global:hello = "world"
但是使用全局變量通常是不好的做法。所以另一種方法是讓腳本輸出「Hello」,然後捕獲輸出的管道調用。只要改變你最初的腳本是:
"world"
然後調用它,並抓住pipeline.Invoke的輸出()和抓鬥的第一個對象。
您還可以更改調用腳本的方式。將字符串傳遞給CreatePipeline,如下所示:
$hello = foo.ps1
然後檢索變量$ hello的內容。
如果你仍然想要一個全局的(其他答案涵蓋了這個),你不需要使用主機應用程序中的Get-Variable
。
創建一個運行空間並執行該腳本。
然後,您可以從運行空間訪問變量:
value = myRunspace.SessionStateProxy.GetVariable("name");
的限制是目前做遠程運行空間不myRunspace.SessionStateProxy.GetVariable工作,它拋出NewNotImplemented – ROAR 2010-02-25 08:13:56