下面的脚本在PowerShell 5上运行得很好
$NetworkChange = New-Object System.Net.NetworkInformation.networkchange
Register-ObjectEvent -InputObject $NetworkChange -EventName NetworkAddressChanged -SourceIdentifier "NetworkChanged" -Action {
Write-Host "network switched"
$LanConnected=@(Get-WmiObject win32_networkadapter -filter "netconnectionstatus = 2" | Where-Object {$_.netconnectionid -like "*Local Area Connection*"})
If($LanConnected){
Get-WmiObject win32_networkadapter -filter "netconnectionstatus = 2" | Where-Object {$_.netconnectionid -like "*Wireless Network Connection*"} | ForEach-Object {$_.disable()}
}
Else {
Get-WmiObject win32_networkadapter | Where-Object {$_.netconnectionid -like "*Wireless Network Connection*"} | ForEach-Object {$_.enable()}
}
}
但是,它在PowerShell 2上失败,并显示与New-Object cmdlet相关的以下错误
New-Object : Constructor not found. Cannot find an appropriate constructor for type System.Net.NetworkInformation.networkchange.
At line:1 char:11
+ New-Object <<<< System.Net.NetworkInformation.networkchange
+ CategoryInfo : ObjectNotFound: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand
知道它失败的原因吗?PowerShell 2上的New-Object cmdlet是否有不同的语法?
注意:我们的遗产仍然在PowerShell 2上,因此这场斗争。提前感谢
史蒂夫
https://stackoverflow.com/questions/38324218
复制相似问题