2014-01-26 62 views
0

我試圖從$Win32_OperatingSystem.SystemDrive變量中拉出系統驅動器中存儲的信息$Win32_LogicalDisk從陣列中拉出單個項目

$Temp_SystemDrive = $Win32_logicalDisk | 
    Select DeviceID, FreeSpace, Size | 
    Where-Object (($_.DeviceID) -like ($Win32_OperatingSystem.SystemDrive)); 
$Temp_SystemDrive 

回答

3

Win32_LogicalDiskWin32_OperatingSystem不是變量,它們是WMI類。您需要使用Get-WmiObject才能訪問它們。試試這個:

#Save OS-information early to clean up your code 
$os = (Get-WmiObject Win32_OperatingSystem) 

#Save the ORIGINAL object for disk in the case you need more info later 
$Temp_SystemDrive = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DeviceID -eq $os.SystemDrive } 

#Get the properties you need 
$Temp_SystemDrive | Select DeviceID, FreeSpace, Size 
+3

'GET-WmiObject'可以自己做過濾:'Get-WmiObject Win32_LogicalDisk -Filter「DeviceID ='$($ os.SystemDrive)'」' –

+0

+1。我已經重寫了他的樣本:) –

1

爲了獲得最佳性能,只拉你需要的字段,並在查詢級別應用過濾器,而不是之後:

$os = Get-WmiObject -Query "SELECT SystemDrive FROM Win32_OperatingSystem" 
$wmiQuery = "SELECT DeviceID, FreeSpace, Size " + 
       "FROM Win32_LogicalDisk " + 
      "WHERE DeviceID='$($os.SystemDrive)'" 
Get-WmiObject -Query $wmiQuery