我正在尝试在多台计算机上获取物理驱动器的大小。有些计算机有1个物理驱动器,有些有超过1个。 我试过这个脚本,如果我在一台机器上本地运行它,它工作正常。
$s = "machine name"
$counts = GET-WMIOBJECT –query "SELECT * FROM Win32_DiskDrive" -ComputerName $s
$total_disk = $counts.count
$i = 0
$total_disk = $total_disk -1
$infoObjecta = New-Object PSObject
for(; $i -le $total_disk; $i++){
$a = $i
$a = GET-WMIOBJECT –query "SELECT * FROM Win32_DiskDrive WHERE DeviceID='\\\\.\\PHYSICALDRIVE$i'" -ComputerName $s
$b = $i
$b = [math]::round($a.size /1GB)
Add-Member -inputObject $infoObjecta -memberType NoteProperty -name "Physical_Disk $i" -value $b
}
OS版本是Win Server 2003,2008& 2012。
我不确定我做错了什么。
如果我在该机器上本地运行此脚本或者给机器名称$s
变量,那么它工作正常。
但是,如果我将远程机器名称放在$s
中,那么它就不会给我输出。
我调试并发现$counts.count
没有返回任何值。
请告诉我如何解决此问题或任何其他方法来获取硬盘数量和大小的详细信息。
答案 0 :(得分:2)
在某些版本的Powershell中,如果变量为1或0,则它不会返回任何内容。检查@($ counts).count是否返回值。