Powershell 输出服务器名称和InstallState of Service

Powershell 输出服务器名称和InstallState of Service,powershell,Powershell,我对Powershell很陌生。我有以下简单的小脚本: $serversall = (Get-Content ".\Servers.txt") foreach($vm in $serversall){ Get-WindowsFeature Web-Server -ComputerName $vm | Select-Object InstallState | Export-Csv -path E:\Scripts\Output\IISWebServersStatus.csv -

我对Powershell很陌生。我有以下简单的小脚本:

$serversall = (Get-Content ".\Servers.txt")  
foreach($vm in $serversall){ 
  Get-WindowsFeature Web-Server -ComputerName $vm | 
  Select-Object InstallState |
  Export-Csv -path E:\Scripts\Output\IISWebServersStatus.csv -Append
}

这只给了我一列,让我知道状态是“已安装”还是“可用”。我想要另一列,它也会在服务状态旁边显示服务器名称。你知道我将如何做到这一点吗?

我建议采用以下方法:

$serversall = (Get-Content ".\Servers.txt")
$output = @()
foreach($vm in $serversall) { 
  $installed = (Get-WindowsFeature Web-Server -ComputerName $vm).InstallState
  $output += New-Object PSCustomObject -Property @{'ComputerName'=$vm; 'Status'=$installed }
}

$output | Export-Csv -path E:\Scripts\Output\IISWebServersStatus.csv -Append
创建一个数组,
$output
,用于存储所有信息。在每个循环迭代中,构建一个包含服务器名称和安装状态的对象,并将其附加到输出数组中

循环完成后,将输出数组写入csv文件


最后写一个文件将节省i/o操作,因此可以节省时间。在本例中,
Get WindowsFeature
是一个相对缓慢的操作,因此可能没有什么区别,但是理解理论还是很好的

太好了!非常感谢。