繁体   English   中英

新对象在PowerShell 2上失败,找不到构造函数错误

[英]New-Object fails on PowerShell 2 with Constructor not found error

我在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上,因此需要进行努力。 提前致谢

史蒂夫

在PS5中,此代码如下:

$NetworkChange = [System.Net.NetworkInformation.NetworkChange]::new()

PS2说[System.Net.NetworkInformation.NetworkChange] doesn't contain a method named 'new'. 因此,我们可以通过创建变量“经典”方式来解决它:

New-Variable -Name NetworkChange -Value ([System.Net.NetworkInformation.NetworkChange])
$NetworkChange

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM