Powershell 从数组中提取单个项

Powershell 从数组中提取单个项,powershell,powershell-2.0,Powershell,Powershell 2.0,我试图从$Win32\u OperatingSystem.SystemDrive变量中提取存储在系统驱动器$Win32\u LogicalDisk中的信息 $Temp_SystemDrive = $Win32_logicalDisk | Select DeviceID, FreeSpace, Size | Where-Object (($_.DeviceID) -like ($Win32_OperatingSystem.SystemDrive)); $Temp_SystemDri

我试图从
$Win32\u OperatingSystem.SystemDrive
变量中提取存储在系统驱动器
$Win32\u LogicalDisk
中的信息

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

Win32\u LogicalDisk
Win32\u OperatingSystem
不是变量,它们是WMI类。您需要使用
获取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

Win32\u LogicalDisk
Win32\u OperatingSystem
不是变量,它们是WMI类。您需要使用
获取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

要获得最佳性能,请仅提取所需的字段,并在查询级别应用筛选器,而不是在以下情况之后:

$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

要获得最佳性能,请仅提取所需的字段,并在查询级别应用筛选器,而不是在以下情况之后:

$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

获取WmiObject
可以自己进行过滤:
获取WmiObject Win32_LogicalDisk-Filter“DeviceID=”$($os.SystemDrive)“
获取WmiObject可以自己进行过滤:
获取WmiObject Win32_LogicalDisk-Filter“DeviceID=”$($os.SystemDrive)“