Я работаю в сценарии, чтобы создать отчет об инвентаризации в моей работе. Большая часть скрипта работает нормально, но у меня возникают проблемы с правильным размером монитора в дюймах.
Как я могу получить эти значения в моем текущем скрипте?
$ManufacturerHash = @{
"AAC" = "AcerView";
"ACR" = "Acer";
"ACI" = " Asus";
"APP" = "Apple Computer";
"AUO" = "Asus";
"CMO" = "Acer";
"CPQ" = "Compaq";
"DEL" = "Dell";
"HWP" = "HP";
"LEN" = "Lenovo";
"SAN" = "Samsung";
"SAM" = "Samsung";
"SNY" = "Sony";
"SRC" = "Shamrock";
"SUN" = "Sun Microsystems";
"SEC" = "Hewlett-Packard";
"TAT" = "Tatung";
"TOS" = "Toshiba";
"TSB" = "Toshiba";
"VSC" = "ViewSonic";
"UNK" = "Unknown";
"_YV" = "Fujitsu";
}
Write-Host "##Monitors##" -ForegroundColor Green
$displayDevices = Get-WmiObject -Namespace root\WMI -Class WMIMonitorID
$DisplayParams = Get-WmiObject -Namespace root\WMI -Class WmiMonitorBasicDisplayParams
foreach ($displayDevice in $displayDevices) {
If ([System.Text.Encoding]::ASCII.GetString($displayDevice.UserFriendlyName) -ne $null) {
$displayModel = ([System.Text.Encoding]::ASCII.GetString($displayDevice.UserFriendlyName)).Replace("$([char]0x0000)","")
} else {
$displayModel = $null
}
$displaySerial = ([System.Text.Encoding]::ASCII.GetString($displayDevice.SerialNumberID)).Replace("$([char]0x0000)","")
$displayManufacturer = ([System.Text.Encoding]::ASCII.GetString($displayDevice.ManufacturerName)).Replace("$([char]0x0000)","")
$displayManufacturerFriendly = $ManufacturerHash.$displayManufacturer
If ($displayManufacturerFriendly -eq $null) {
$displayManufacturerFriendly = $displayManufacturer
}
$MaxHorizontalImageSize = [System.Math]::Pow($monitor.MaxHorizontalImageSize, 2)
$MaxVerticalImageSize = [System.Math]::Pow($monitor.MaxVerticalImageSize, 2)
$inches= [System.Math]::Round(([System.Math]::Sqrt($MaxHorizontalImageSize + $MaxVerticalImageSize)/2.54))
Write-Host "Manufacturer:"$displayManufacturerFriendly
Write-Host "Model:"$displayModel
Write-Host "Serial:"$displaySerial
Write-Host "Size: $inches inches"
Write-Host ""