Variables Powershell外部程序作为变量

Variables Powershell外部程序作为变量,variables,powershell,Variables,Powershell,我刚从powershell开始。并创建了一个脚本来监视我的服务器。 但是,我还需要从服务器监视我的硬盘和raid配置。这只能通过HP提供的软件完成 所以我想要的是: 我有一个来自HP的命令行实用程序,可以用来监视阵列和磁盘。 当我启动此实用程序时,我得到以下信息: PS C:\Program Files (x86)\Compaq\Hpacucli\Bin> .\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box

我刚从powershell开始。并创建了一个脚本来监视我的服务器。 但是,我还需要从服务器监视我的硬盘和raid配置。这只能通过HP提供的软件完成

所以我想要的是:
我有一个来自HP的命令行实用程序,可以用来监视阵列和磁盘。 当我启动此实用程序时,我得到以下信息:

PS C:\Program Files (x86)\Compaq\Hpacucli\Bin> .\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay  1, 750 GB)" show status | out-host 
physicaldrive 1I:0:1 (port 1I:box 0:bay 1, 750 GB): OK
我只是想把这个输出作为一个变量,以便在我的脚本中进一步使用它

如何做到这一点

我试过:

$disk1 = "c:\program files (x86)\Compaq\hpacucli\bin\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay  1, 750 GB)" show status | out-host"
但这不起作用

所以我只想将
physicaldrive1i:0:1(端口1I:box 0:bay1750gb):OK
作为变量

我希望有人能帮助我。所以我可以进一步学习使用powershell


谢谢,准备好了。dennis

在使用exe输出时,请清除
out host
cmdlet,例如:

$disk1 = .\hpacucli.exe controller slot=3 physicaldrive "1I:0:1 (port 1I:box 0:bay 1, 750 GB)" show status
使用PowerShell时,请记住,无论何时调用管道并有输出,它都会转到输出流,在那里可以被变量捕获(如上所述),或者如果没有捕获输出,它会显示在屏幕上。当您通过管道连接到主机输出时,它会绕过正常输出,并“直接”在屏幕上显示输入。这就是为什么不能将数据捕获到变量中


在函数中,这与传统语言有点不同,因为生成输出的每个语句都不会捕获到变量(或重定向到$null),因此会生成该函数的输出。对于许多首次使用PowerShell的用户来说,当他们的函数返回的结果超出预期时,这可能会让他们感到惊讶。更多细节,请查看。我仍然无法理解。只是不知道如何正确操作。我希望在键入:$disk1=。\hpacucli.exe控制器插槽=3 physicaldrive“1I:0:1(端口1I:box 0:bay 1,750 GB)”时显示状态,然后键入$disk1,以获得磁盘的状态,而不是$disk1=。\hpacucli.exe控制器插槽=3 physicaldrive“1I:0:1(端口1I:box 0:bay 1,750 GB)”作为结果显示状态。我希望有人能理解我的意思。再说一次,我对powershell(以及一般的脚本编写)是完全陌生的