我有以下PowerShell脚本,我想在我的C#应用程序中运行。
$adapters=(gwmi win32_networkadapterconfiguration )
Foreach ($adapter in $adapters){
Write-Host $adapter
$adapter.settcpipnetbios(2)
}
$nics=([wmiclass]'Win32_NetworkAdapterConfiguration')
Foreach($nic in $nics){
Write-Host $adapter
$nic.enablewins($false,$false)
}
这是我到目前为止尝试使用“使用System.Management.Automation;”,但脚本无效。有人能指出我正确的方向吗?
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Process");
ps.AddArgument("$adapters=(gwmi
win32_networkadapterconfiguration )");
ps.AddArgument("Foreach($adapter in $adapters){");
ps.AddArgument(" Write - Host $adapter");
ps.AddArgument("$adapter $adapter.settcpipnetbios(2)}");
//WINS LMHOSTS lookup
ps.AddArgument("$nics = ([wmiclass]'Win32_NetworkAdapterConfiguration')");
ps.AddArgument("Foreach($nic in $nics){");
ps.AddArgument(" Write - Host $adapter");
ps.AddArgument("$nic.enablewins($false,$false)}");
答案 0 :(得分:1)
您的代码末尾似乎缺少ps.Invoke();
。或者你刚刚把它从你的列表中删除了?
您可以在此博客文章中找到有关执行PowerShell代码的不同方法的更多信息:https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/(部分"脚本/命令执行:"及以下。)
答案 1 :(得分:0)
感谢我找到解决方案的帮助。为了使脚本有效,我必须按如下方式构造代码。
//Disable NetBIOS over TCP/IP - 2=disable, 1=enable, 0=DHCP default
//And WINS LMHOSTS lookup
string script = @"
$adapters=(gwmi win32_networkadapterconfiguration )
Foreach($adapter in $adapters)
{
Write-Host $adapter
$adapter.settcpipnetbios(2)
}
$nics=([wmiclass]'Win32_NetworkAdapterConfiguration')
Foreach($nic in $nics){
Write-Host $adapter
$nic.enablewins($false,$false)
}
";
PowerShell powerShell = PowerShell.Create();
powerShell.AddScript(script);
powerShell.Invoke();
对于那些不知道的人,此代码将禁用LMhosts查找和禁用TCP / IP上的NetBios;记得用管理权限运行它。