簡體   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