NETSH 是否已被 PowerShell 取代(2012 年 12 月)

NETSH 是否已被 PowerShell 取代(2012 年 12 月)

简单问题:我可以避免在 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'))

相关内容