我正在制作某种IP设置工具,并且我通过WMI(Win32_NetworkAdapterConfiguration)遇到EnableDHCP方法问题。适配器设置为DHCP,但是仍然有IP和网关。所以我正在使用对我有用的netsh函数,但是我只想使用WMI。有什么建议吗?
我尝试了一些诸如Lease之类的方法,并将null发送给静态对象,但它不起作用。
s//THIS ONE I WANT TO USE BUT ITS LET IP AT ADAPTER EVEN DHCP IS ENABLED
public void button1_Click(object sender, EventArgs e)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
//check numbe of aktive ports
foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
try
{
// write parameters to active port
ManagementBaseObject setIP;
setIP = objMO.InvokeMethod("EnableDHCP", null, null);
}
catch (Exception x)
{
}
}
}
}
Process p = new Process();//netsh work well but i dont want to use
ProcessStartInfo psi = new ProcessStartInfo("netsh", "interface ip set address \"" + adapter.Name + "\" dhcp");
p.StartInfo = psi;
p.Start();
我希望可以通过WMI使用EnableDHCP,并且IP地址已经清除,但是IP地址仍然存在
答案 0 :(得分:0)
public Collection<PSObject> Invoke(string Query)
{
Collection<PSObject> ps = new Collection<PSObject>();
try
{
using (PowerShell PSI = PowerShell.Create())
{
PSI.AddScript(Query);
ps = PSI.Invoke();
}
}
catch (Exception ex)
{
ps = null;
throw;
}
return ps;
}
创建一个类以调用PS查询
public List<YourObjectList> GetInfo(string ParametersIFYouWant)
{
List<YourObjectList> ListInfo = new List<YourObjectList>();
InvokePowerShellQuery powerShellQuery = new InvokePowerShellQuery();
string PSQuery = "Query Here as a string";
try
{
var PSOutput = powerShellQuery.Invoke(PSQuery);
//In your case you wont need unless in you PS Query you return a message or some other object you want to report back for success or failure.
foreach (var item in PSOutput)
{
//Fill ListInfo
}
}
catch (Exception ex)
{
Listinfo = null;
//handle however you want here
}
return Listinfo;
}
将查询发送到您的班级
您可以使用的PS查询上的Google快速搜索
https://www.pdq.com/blog/using-powershell-to-set-static-and-dhcp-ip-addresses-part-1/ https://4sysops.com/archives/set-an-ip-address-and-configure-dhcp-with-powershell