У меня есть следующий скрипт, который будет собирать статистику использования диска с удаленных серверов. Я пытаюсь получить вывод для отображения имени хоста, а не IP из файла. \ ServerIPs.txt, который читает скрипт. Я попытался извлечь «SystemName» из get-wmiobject Win32_LogicalDisk, но не смог получить имя для отображения. Что нужно добавить, чтобы имя хоста отображалось в отчете, а не IP-адрес хоста?Отчет об использовании диска Powershell
$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Server Name"
$c.Cells.Item(1,2) = "Drive"
$c.Cells.Item(1,3) = "Total Size (GB)"
$c.Cells.Item(1,4) = "Free Space (GB)"
$c.Cells.Item(1,5) = "Free Space (%)"
$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$intRow = 2
$colComputers = get-content ".\ServerIPs.txt"
foreach ($strComputer in $colComputers)
{
$colDisks = get-wmiobject Win32_LogicalDisk -computername $strComputer -Filter "DriveType = 3"
foreach ($objdisk in $colDisks)
{
$c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
$c.Cells.Item($intRow, 2) = $objDisk.DeviceID
$c.Cells.Item($intRow, 3) = "{0:N0}" -f ($objDisk.Size/1GB)
$c.Cells.Item($intRow, 4) = "{0:N0}" -f ($objDisk.FreeSpace/1GB)
$c.Cells.Item($intRow, 5) = "{0:P0}" -f ([double]$objDisk.FreeSpace/[double]$objDisk.Size)
$intRow = $intRow + 1
}
}
Что вы пытались получить имя, полученное для отображения? Я не вижу '$ objDisk.SystemName' в любом месте. Вы можете попробовать добавить' -Property DeviceID, SystemName, Size, FreeSpace' в ваш вызов 'Get-WmiObject'. –
вы можете сделать' [System. Net.Dns] :: GetHostByAddress ("xxxx") ', чтобы получить имя хоста из ваших DNS, если по какой-то причине wmi не работает для вас – Paul
Либо/оба этих комментария могут быть ответы – Matt