簡體   English   中英

powershell 將 ps1 腳本的輸出分配給變量

[英]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 ,它會在腳本關閉后持續存在

我知道,這個問題有點老了,但它可能會幫助某人找到正確的答案。

我在用另一個 PS 腳本執行 PS 腳本並將輸出保存到變量時遇到了類似的問題,這里有 2 個非常好的答案:

  1. 馬蒂亞斯
  2. 克萊門特0

希望能幫助到你!

如果是這樣,請給他們投票,因為他們真的很棒!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM