1

我正在使用 System.Management.Automation 构建一个用作防火墙的程序,本质上,我想知道 PowerShell 2 中是否有特定的 cmdlet 来处理服务器的 ipsec 更改?(即,重复 netsh ipsec 功能)?

还是我必须写一个?:P

我希望有一个更干净的解决方案,而不是在 PowerShell 代码中调用 [diagnostics.process] 来处理 netsh 查询,并且认为 cmdlet 会更好。

有人有任何提示或技巧吗?或者我应该开始深入研究“编写 Windows PowerShell cmdlet”文档,网址为:

http://msdn.microsoft.com/en-us/library/dd878294%28VS.85%29.aspx

感谢您的任何想法!

4

1 回答 1

2

不幸的是,目前还没有任何本机 powershell cmdlet 可以提供与 netsh 类似的功能。

话虽如此,您不必启动新进程即可在 PowerShell 函数中运行 netsh 命令。您可以像运行 cmdlet 一样在 PS 函数或脚本内联中运行通常在 CMD 中运行的任何 exe。您可以将输出保存到变量并使用 select-string 或 -match 运算符处理文本。

举个例子

Function Get-NetShIPInterface {
netsh int ip show int
}
$interface = Get-NetshIPinterface
$interface | select-string "Local Area Connection"

最终我们将获得网络 cmdlet,但目前,netsh 可以完成这项工作。

于 2009-11-10T16:12:01.163 回答