让我先说一下,我对powershell和编程很新。我有一个powershell脚本,它接受一些参数并输出一个值。 脚本的结果将类似于9/10,其中9将是节点总数中的活动数。我想将输出分配给变量,以便我可以根据值调用另一个脚本。
这是我尝试过的,但它不起作用:
$active = (./MyScript.ps1 lb uid **** site)
我也试过以下似乎将变量赋给空字符串
$active = (./MyScript.ps1 lb uid **** site | out-string)
在这两种情况下,他们都会立即运行并给我值,而不是将其分配给变量。当我调用变量时,我没有数据。
答案 0 :(得分:4)
我会接受PowerShell的面向对象的本质,而不是输出像“9/10”这样的字符串,创建一个具有NumActiveNodes和TotalNodes等属性的对象,例如在您的脚本输出中如下:
new-object psobject -Property @{NumActiveNodes = 9; TotalNodes = 10}
当然,在num active和total节点的动态值中替换。请注意,未捕获的对象将自动出现在脚本的输出中。然后,如果这只是您的脚本输出,您可以这样做:
$obj = .\MyScript.ps1
$obj.NumActiveNodes
9
$obj.TotalNodes
10
对于那些使用脚本输出的人来说,它会更好。事实上,输出有点自我记录,例如:
C:\PS> .\MyScript.ps1
NumActiveNodes TotalNodes
-------------- ----------
9 10
P.S。什么时候StackOverflow在格式化PowerShell脚本时开始如此糟糕?
答案 1 :(得分:3)
如果您不想更改脚本(假设脚本只写了$avail_count/$total_count
行),您可以这样做:
$var= powershell .\MyScript.ps1
或者只是删除write-host
并且只有$avail_count/$total_count
然后执行:
$var = .\MyScript.ps1
答案 2 :(得分:0)