繁体   English   中英

如何从C#运行PowerShell代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM