简单问题:我可以避免在 Windows Server 2008 R2 中使用 NETSH,而是使用 PowerShell CmdLets 来操作 HTTP 之类的东西吗?
如果是这样,有哪些 CmdLets 可以帮助我开始,它们是某些额外模块的一部分吗?
答案1
Powershell 3.0 中有一个 NetAdapter 模块,它似乎涵盖了 netsh 的功能,但该模块仅随 Windows 8 或 Windows Server 2012 附带,因此您仍然只能在 Windows Server 2008 R2 上使用 netsh 或 CIM/WMI。
虽然与 netsh 问题无关,但版本 3 添加了包含在 2008 R2 和 Windows 7 中的invoke-webrequest cmdlet。
答案2
powershell 在 .NET 上运行,因此您应该能够使用 http 做任何您想做的事情,例如这里有一个简单的 RSS 功能:
function RSS{
Param ($Rssurl='http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&output=rss')
$proxy = New-Object System.Net.WebProxy("http://10.10.18.18:8080")
$Webclient = new-object net.webclient
$Webclient.proxy=$proxy
$Webclient.UseDefaultCredentials = $True
$rss = [xml]$Webclient.DownloadString($Rssurl)
$rss.rss.channel.item | ForEach {
New-Object PSObject -Property @{
Title = $_.Title
PublicationDate = (Get-Date $_.PubDate)
Link = $_.Link
}
}
下面是纯 PS 中更改网卡设置的另一个示例:
$card=Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true"
if($profile -eq 'dhcp' ){
$card.EnableDhcp()
write-host OK -ForegroundColor 'green'
exit
}
# manual IP settings :
$card.EnableStatic($address,'255.255.255.0')
$card.SetGateways($gw)
$card.SetDNSServerSearchOrder(@($dns,'10.24.1.8'))