Sto ricevendo errori di class non validi per il mio script PowerShell

Quando eseguo questo script, ottengo questo errore

Get-WmiObject: class non valida "Msvm_ImageManagementService"

e

Get-WmiObject: class non valida "MSPower_DeviceEnable"

e

Get-WmiObject: class non valida "MSPower_DeviceWakeEnable"

Gli errori di cui sopra si verificano solo su alcuni computer e non su altri.

$computerlist = Get-Content F:\Code\powershell\network_shutdown\computer-list.csv foreach ($computer in $computerlist) { # Main Processing Section # Write-Host $computer if((Test-Connection -Cn $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { Write-Host $computer Write-Host "Disable `"Allow the computer to turn off this device to save power`"" Get-WmiObject -computername $computer Win32_NetworkAdapter -filter "AdapterTypeId=0" | % { $strNetworkAdapterID=$_.PNPDeviceID.ToUpper() Get-WmiObject -class MSPower_DeviceEnable -computername $computer -Namespace $namespace | % { if($_.InstanceName.ToUpper().startsWith($strNetworkAdapterID)) { $_.Enable = $false $_.Put() | Out-Null } } } Write-Host "Disable `"Allow this device to wake the computer`"" Get-WmiObject -computername $computer Win32_NetworkAdapter -filter "AdapterTypeId=0" | % { $strNetworkAdapterID=$_.PNPDeviceID.ToUpper() Get-WmiObject -class MSPower_DeviceWakeEnable -computername $computer -Namespace $namespace | % { if($_.InstanceName.ToUpper().startsWith($strNetworkAdapterID)){ $_.Enable = $false $_.Put() | Out-Null } } } Write-Host "Disable `"Only allow a magic packet to wake the computer`"" Get-WmiObject -computername $computer Win32_NetworkAdapter -filter "AdapterTypeId=0" | % { $strNetworkAdapterID=$_.PNPDeviceID.ToUpper() Get-WmiObject -class MSNdis_DeviceWakeOnMagicPacketOnly -computername $computer -Namespace $namespace | % { if($_.InstanceName.ToUpper().startsWith($strNetworkAdapterID)){ $_.EnableWakeOnMagicPacketOnly = $false $_.Put() | Out-Null } } } } else { Write-Host $computer + " OFFLINE" $output = new-object psobject $output | Add-Member noteproperty ComputerName $computer $arrays += $output } $arrays | Export-Csv -Path F:\Code\powershell\network_shutdown\Results.csv } 

Come posso risolvere lo spazio dei nomi in modo che posso indirizzare tutti i computer?

Il mio errore di logging non funziona neanche. Cosa posso fare per get l'OFFLINE e il FAILED e il SUCCESS in un file CSV? (Sono consapevole che nel mio codice qui sopra, sto solo catturando quelle offline ma che non funziona neanche)

Ho il seguente

L'invocazione del metodo non è rioutput perché [System.Management.Automation.PSObject] non contiene un metodo denominato 'op_Addition'.

Il codice è in esecuzione su Windows 7

Versione di PowerShell

 Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1 

  • Quali autorizzazioni / diritti richiede all'utente un accesso WMI alle macchine remote?
  • SCCM 2012 SP1 - DownloadContentFiles () non riuscito con hr = 0x80041013
  • Avere problemi con il monitoraggio di pool di applicazioni a 32 bit in esecuzione su IIS a 64 bit
  • Come accettare EULAs per gli aggiornamenti software distribuiti tramite SCCM utilizzando Powershell
  • Come faccio ad avviare un command in un computer remoto con un trust di dominio non valido? (utilizzando crede locali)
  • Trovare il defram WMI o Reg key di ultima manutenzione
  • Le autorizzazioni WMI per la modifica di un IP locale senza privilegi elevati
  • Configurazione di RelayIPList utilizzando CimObject interrompe il server SMTP di Windows
  • One Solution collect form web for “Sto ricevendo errori di class non validi per il mio script PowerShell”

    Get-WmiObject: class non valida "Msvm_ImageManagementService"

    Questa class è esposta dal provider WMI Hyper-V . Se non si dispone di strumenti di gestione Hyper-V o Hyper-V che sono installati nella macchina di destinazione, questa class non sarà presente

    Get-WmiObject: class non valida "MSPower_ *"

    La superclass MSPower non è ufficialmente supportta e le classi derivate _Device * non vengono esposte a less che una scheda di networking installata non supporti Wake-on-LAN

    L'invocazione del metodo non è rioutput perché [System.Management.Automation.PSObject] non contiene un metodo denominato 'op_Addition'.

    è probabilmente causata dalla seguente row:

     $arrays += $output 

    Se l' $arrays non esiste ancora, PowerShell non può dedurre automaticamente che si desidera che si tratti di un arrays di PSObject s – PowerShell quindi cerca di utilizzare il tipo di object sul lato destro dell'operatore di aggiunta ( + ) , e correttamente non riesce perché PSObject non support tale operazione.

    Aggiungere all'inizio all'inizio dello script:

     $arrays = @() 

    Per inizializzare un arrays vuoto o indicare il tipo desiderato con un cast esplicito:

     [PSObject[]]$arrays += $output 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.