我需要获取Monitor分辨率大小的列表。我找到了这个脚本[这里]。 (http://poshcode.org/4688)。它可以在一台计算机上正常运行。但我想修改此脚本以导入客户端列表,然后导出csv列表,包括导入列表的每个客户端上可能的分辨率大小。
param($ComputerName = 'COMPUTERNAME')
$output = [PSCustomObject]@{ComputerName = $ComputerName;MonitorSizes=''}
$oWmi = Get-WmiObject -Namespace 'rootwmi' -ComputerName $ComputerName
-Query "SELECT MaxHorizontalImageSize,MaxVerticalImageSize FROM WmiMonitorBasicDisplayParams"; $sizes = @(); if ($oWmi.Count -gt 1) {
foreach ($i in $oWmi) {
$x = [System.Math]::Pow($i.MaxHorizontalImageSize/2.54,2)
$y = [System.Math]::Pow($i.MaxVerticalImageSize/2.54,2)
$sizes += [System.Math]::Round([System.Math]::Sqrt($x + $y),0)
}##endforeach } else {
$x = [System.Math]::Pow($oWmi.MaxHorizontalImageSize/2.54,2)
$y = [System.Math]::Pow($oWmi.MaxVerticalImageSize/2.54,2)
$sizes += [System.Math]::Round([System.Math]::Sqrt($x + $y),0) }##endif
$output.MonitorSizes = $sizes
$output
示例结果:
ComputerName MonitorSizes
------------ ------------
COMPUTERNAME {15,24}
ComputerName MonitorSizes
------------ ------------
PC1 {19}
答案 0 :(得分:1)
这在PowerShell中非常简单。只需将代码包装在foreach
循环中并迭代一个或多个计算机名称:
param(
[string[]]$ComputerName
)
foreach($Computer in $ComputerName){
$oWmi = Get-WmiObject -Namespace 'root\wmi' -ComputerName $Computer -Query "SELECT MaxHorizontalImageSize,MaxVerticalImageSize FROM WmiMonitorBasicDisplayParams";
$sizes = @()
if ($oWmi.Count -gt 1)
{
foreach ($i in $oWmi) {
$x = [System.Math]::Pow($i.MaxHorizontalImageSize/2.54,2)
$y = [System.Math]::Pow($i.MaxVerticalImageSize/2.54,2)
$sizes += [System.Math]::Round([System.Math]::Sqrt($x + $y),0)
}##endforeach
}else{
$x = [System.Math]::Pow($oWmi.MaxHorizontalImageSize/2.54,2)
$y = [System.Math]::Pow($oWmi.MaxVerticalImageSize/2.54,2)
$sizes += [System.Math]::Round([System.Math]::Sqrt($x + $y),0)
}##endif
New-Object PSCustomObject -Property @{ComputerName = $Computer; MonitorSizes = $sizes}
}
假设您将其保存到名为GetMonitorSizes.ps1
的文件中,您可以像这样使用它:
$Names = "server1","server2","server3"
.\GetMonitorSizes.ps1 -ComputerName $Names
或者如果每行都有一个带有计算机名称的文件:
$Names = Get-Content '\\server\list.txt'
.\GetMonitorSizes.ps1 -ComputerName $Names
您还可以使用Export-Csv
cmdlet
.\GetMonitorSizes.ps1 -ComputerName $Names | Export-Csv .\screensizes.csv -NoTypeInformation