[英]powershell assigning output of a ps1 script to a variable
首先,我對 powershell 和編程非常陌生。 我有一個 powershell 腳本,它接受一些參數並輸出一個值。 腳本的結果將類似於 9/10,其中 9 將是節點總數中活動的數量。 我想將輸出分配給一個變量,這樣我就可以根據該值調用另一個腳本。
這是我嘗試過的,但不起作用:
$active = (./MyScript.ps1 lb uid **** site)
我還嘗試了以下似乎將變量分配給空字符串的方法
$active = (./MyScript.ps1 lb uid **** site | out-string)
在這兩種情況下,它們都會運行並立即給我值,而不是將其分配給變量。 當我調用變量時,我沒有得到任何數據。
我會接受 PowerShell 的面向對象的特性,而不是輸出像“9/10”這樣的字符串,而是在腳本輸出中創建一個具有像 NumActiveNodes 和 TotalNodes 這樣的屬性的對象,如下所示:
new-object psobject -Property @{NumActiveNodes = 9; TotalNodes = 10}
當然,用動態值代替 num active 和 total nodes。 請注意,未捕獲的對象將自動出現在腳本的輸出中。 然后,如果這是您的腳本唯一輸出,您可以這樣做:
$obj = .\MyScript.ps1
$obj.NumActiveNodes
9
$obj.TotalNodes
10
對於那些使用腳本輸出的人來說,它會更好。 事實上,輸出在某種程度上是自我記錄的,例如:
C:\PS> .\MyScript.ps1
NumActiveNodes TotalNodes
-------------- ----------
9 10
PS StackOverflow 什么時候開始在格式化 PowerShell 腳本方面如此糟糕?
如果您不想更改腳本(並假設腳本僅寫入了$avail_count/$total_count
行),您可以執行以下操作:
$var= powershell .\MyScript.ps1
或者只是刪除write-host
並只有$avail_count/$total_count
然后做:
$var = .\MyScript.ps1
你可以在你的腳本中做一個$global:foobar
,它會在腳本關閉后持續存在
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.