【发布时间】:2015-07-13 14:26:56
【问题描述】:
目的:如何提取服务器信息?
对于servers.txt中列出的每个服务器名称,我想获得以下信息(以这种格式):
服务器名称、IP 地址、操作系统名称、总物理内存、处理器、每个驱动器号和大小、系统型号
每个服务器的逗号分隔和换行。
下面是我的 PowerShell 代码。你们的家伙能提示一下为什么这不起作用吗?还有为什么我在New-Object 语句中出现错误?
foreach ($ComputerName in (Get-Content -Path .\servers.txt)) {
$HashProps = @{
'tHostname' = Get-WmiObject Win32_Computersystem -ComputerName $ComputerName | Select-Object -ExpandProperty Name
'tIP' = [System.Net.Dns]::GetHostAddresses($computername)
'tOS' = Get-WmiObject -ComputerName $ComputerName -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
'tMemory' = Get-WmiObject Win32_PhysicalMemory | Measure-Object -Property capacity -Sum | foreach { "$("{0:n2}" -f ( $_.Sum/1GB ) )" }
'tcpu' = Get-WmiObject Win32_processor | Select-Object name, numberofcores
'tDisks' = Get-WmiObject Win32_LogicalDisk | foreach { "$($_.DeviceID) $("{0:n2}" -f ( $_.Size/ 1GB ) )" }
'tsysmodel' = Get-Wmiobject Win32_computersystem | Select-Object model
}
New-Object -TypeName psObject -Property $HashProps |
ConvertTo-Csv -NoTypeInformation | Out-File -Append .\output.csv
}
如果这更容易的话,我愿意接受其他方法。
【问题讨论】:
-
您需要定义“不起作用”并解释您从
New-Object得到的错误。 -
@alroc:
New-Object出乎意料。如果我没有运行最后两行,则不会出现错误。然后运行最后两行工作正常。但是,我没有了解所有服务器和我寻求的格式。我希望这会有所帮助。 -
请不要解释错误。按原样准确发布它们。如果需要解释,我们会做的。
标签: powershell server wmi