相当于此PowerShell命令的C#是什么?存储:C#相当于PowerShell命令
PS C:\WINDOWS\system32> gwmi win32_DiskDrive | %{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)} where resultclass = Win32_PnpEntity" | %{gwmi -query "ASSOCIATORS OF {$($_.__RELPATH)}"}} | fl __CLASS,__RELPATH
上述命令的结果是:
...
__CLASS : Win32_SystemDriver
__RELPATH : Win32_SystemDriver.Name="disk"
__CLASS : Win32_ComputerSystem
__RELPATH : Win32_ComputerSystem.Name="JMR-ENG-SARAH"
__CLASS : Win32_IDEController
__RELPATH : Win32_IDEController.DeviceID="PCI\\VEN_8086&DEV_8C82&SUBSYS_79171462&REV_00\\3&11583659&0&FA"
__CLASS : CIM_DataFile
__RELPATH : CIM_DataFile.Name="c:\\windows\\system32\\drivers\\disk.sys"
__CLASS : Win32_DiskDrive
__RELPATH : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE1"
__CLASS : Win32_SCSIController
__RELPATH : Win32_SCSIController.DeviceID="PCI\\VEN_144D&DEV_A804&SUBSYS_A801144D&REV_00\\6&381D8F6A&0&00080008"
__CLASS : Win32_SystemDriver
__RELPATH : Win32_SystemDriver.Name="disk"
__CLASS : Win32_ComputerSystem
__RELPATH : Win32_ComputerSystem.Name="JMR-ENG-SARAH"
__CLASS : CIM_DataFile
__RELPATH : CIM_DataFile.Name="c:\\windows\\system32\\drivers\\disk.sys"
__CLASS : Win32_DiskDrive
__RELPATH : Win32_DiskDrive.DeviceID="\\\\.\\PHYSICALDRIVE2"
...
我想我不明白的是如何PowerShell命令操作。我知道部分翻译。
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
String driveDeviceId = wmi_HD["DeviceID"].ToString();
}
以上代码是gwmi win32_DiskDrive
的一部分。我需要提取哪些属性以供讨论。我知道有一份归还物业的清单。
我有另一个代码片段,在那里我得到与物理磁盘相关的驱动器号,它使用ASSOCIATORS OF
gwmi查询。这样,答案应类似于:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
String query2 = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + driveDeviceId + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition";
foreach (ManagementObject partition in new ManagementObjectSearcher(query2).Get())
{
foreach (ManagementObject disk in new ManagementObjectSearcher(
"ASSOCIATORS OF {Win32_DiskPartition.DeviceID='"
+ partition["DeviceID"]
+ "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())
{
String diskMount = disk["Name"].ToString();
}
}
的|
仅仅是一个嵌入式for循环,其中内WMI查询将使用其它环形元件的结果。我想要的查询更复杂一些,双套|
,并使用双套{$($_.__RELPATH)}
。
如何在顶部为所需的PowerShell脚本编写C#代码?
你的目标是什么? –
@Bill_Stewart为了让C#程序设计等同于顶部给出的PowerScript命令。我试图解决方案的方向,因此其余的代码。 –
如果我能改善问题,而不是反对票和近距离投票,我将不胜感激。投票加上近距离投票并没有说明问题。我想学习和改进,不仅仅是针对这个问题,而是针对未来的问题。有很多关于'ManagementObject'类的问题,但我没有发现,它讨论了这个PowerShell脚本中更复杂的元素。 –