Простой вопрос: могу ли я избежать использования NETSH в Windows Server 2008 R2 и вместо этого использовать PowerShell CmdLets для управления такими вещами, как HTTP?
Если да, то какие CmdLet помогут мне начать работу и являются ли они частью дополнительного модуля?
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'))
В Powershell 3.0 есть модуль NetAdapter, который, по-видимому, охватывает функциональность netsh, однако модуль поставляется только с Windows 8 или Windows Server 2012, так что вы все еще застряли с netsh или CIM / WMI в Windows Server 2008 R2.
Хотя это не связано с вопросом netsh, версия 3 добавила командлет invoke-webrequest, который включен в 2008 R2 и Windows 7.