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"

  • Autorizzare il delegato a modificare gli alias smtp in un indirizzo di posta elettronica specifico in Microsoft Exchange 2013
  • Impostazione della configuration condivisa IIS 7.5 (con valori crittografati) in Windows Server 2008 R2 Core
  • Le lettere di unità di rottura di Diskpart dopo che il command powershell viene eseguito
  • Update-Help su un server-core dietro un proxy
  • Esegui powershell remoto come amministratore
  • PowerShell - Limitare la ricerca a una sola OU
  • 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 

  • Perché il bluetooth support uno dei pacchetti predefiniti in "Base" quando si fa l'installazione di un server RHEL / CentOS?
  • Scripting - Come disconnettere le sessioni di Desktop remoto?
  • Perché il redhat sembra essere così popolare nel mondo delle imprese?
  • Vedo un punto dopo -rwxr-xr-x
  • Lo script PowerShell, che mostra i comandi eseguiti
  • Utilizza PowerShell per scoprire cosa utilizza un sacco di memory (su 64 bit 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.