我有以下从独立和集群环境(MS SQL Server)收集磁盘空间信息的小代码:
Get-WMIObject -query "select * from Win32_Volume where DriveType=3 and not name like '%?%'" -computername $svr |select @{n="ServerName";e={$svr}},
Name, Label, FileSystem, @{e={($_.BlockSize /1KB) -as [int]};n="DskClusterSizeInKB"}, @{e={"{0:N2}" -f ($_.Capacity / 1GB)};n="DskTotalSizeInGB"},
@{e={"{0:N2}" -f ($_.Freespace /1GB)};n="DskFreeSpaceInGB"}, @{e={"{0:N2}" -f (($_.Capacity-$_.Freespace) /1GB)};n="DskUsedSpaceInGB"},
@{e={"{0:N2}" -f ($_.Freespace/$_.Capacity*100)};n="DskPctFreeSpace"}, @{n="DateAdded";e={$RunDt}}
如果 $srv 是一个集群网络名称,那么我们为磁盘收集了多次相同的信息
即假设我有两个实例 [Inst1\InstName, Inst2\InstName](集群),带有驱动器号和挂载点,并且这些实例位于同一个物理节点上。
当收集开始时(循环通过服务器列表),它将通过 $srv=Inst1 收集信息,其中将包括 Inst2 的磁盘。
然后当 $srv=Inst2 它将包括 Inst1 的磁盘
任何想法如何解决这个问题?
问候,德米斯科