繁体   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