我正在使用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
感谢您的任何想法!
答案 0 :(得分: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可以完成工作。