[英]How to run PowerShell code from C#?
我有以下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)
}
到目前为止,这是我使用“ using 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)}");
看来您缺少ps.Invoke();
在代码末尾。 还是只是将其排除在列表之外?
您可以在此博客文章中找到有关执行PowerShell代码的不同方法的更多信息: https : //blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/ ( “脚本/命令执行:”及以下部分。)
感谢您的帮助,我找到了解决方案。 为了使脚本正常工作,我必须按如下所示构造代码。
//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。 记住要以管理权限运行它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.