我对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
}
这只是给我一栏,让我知道状态是“已安装”还是“可用”。我想要另一列,该列还将在服务状态旁边显示服务器名称。知道我将如何实现吗?
答案 0 :(得分:1)
我建议采用以下方法:
$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
是一个相对较慢的操作,因此可能没有什么区别,但是仍然可以很好地理解该理论。