2016-03-31 15 views
1

Erster Beitrag, aber normaler Besucher. Ich versuche, ein Powershell-Skript zusammenzufassen, um Shutdowns auf einer Liste von vSphere-Computern in einer CSV-Datei zu starten. vSphere ist Version 5.1u2 und vcenter läuft auf 2008 R2. Ich lade die powercli-Sachen am Anfang des ps-Skripts.Powershell-Skript zum Herunterfahren von VMS - Fehler

Ich fand ein Skript, das genau meinen Bedürfnissen zu entsprechen scheint, aber es sieht aus wie es ein paar Probleme hat. Ich bin mir nicht sicher, ob ich Links zum Original posten kann.

Hier ist mein Versuch, es zum Laufen zu bringen. Powershell wird verwendet, damit es von Überwachungstools gestartet werden kann, wenn ein bestimmter Status erkannt wird.

In diesem Zustand gibt es einen Zuweisung Ausdruck Fehler in Zeile 12 Zeichen 44. Dennoch scheint es viel mehr als das falsch mit dem Skript und das Ausprobieren verschiedener Dinge hat verschiedene Fehler einschließlich "Der Begriff import-csv ist nicht erkannt als Cmdlet ".

Ich bin dankbar für alle Hinweise - Sorry über die zwielichtigen Code einfügen!

# Adds the base cmdlets needed to use powershell directly. Note the location of the powercli environment ps1 script - this may change in future releases of vsphere 
Add-PSSnapin VMware.VimAutomation.Core 
Add-PSSnapin VMware.VumAutomation 
. "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1" 
#The next line is only relevant and needs running once if you get an invalid ssl related message 
#Set-PowerCLIConfiguration -InvalidCertificateAction Ignore 
connect-viserver vc5 
#Get the names of VMs from a .csv then shut down gracefully - assumes we have vmware to be effective on all 
Import-Csv C:\CLIout\listofcriticalvms.csv |   
    foreach {   
     $strNewVMName = $_.name        #Generate a view for each vm to determine power state   
     $vm = Get-View -ViewType VirtualMachine -Filter @{"Name" = $strNewVMName}   
     #If vm is powered on then VMware Tools status is checked   
            if ($vm.Runtime.PowerState -ne "PoweredOff") {   
                if ($vm.config.Tools.ToolsVersion -ne 0) {   
                   Write-Host "VMware tools installed. Graceful OS shutdown ++++++++ $strNewVMName ----"   
                   Shutdown-VMGuest $strNewVMName -Confirm:$false  
  
#For generating email   
                        $Report += $strNewVMName + " --- VMware tools installed. Graceful OS shutdown `r`n"   
               }   
               else {   
                      Write-Host "VMware tools not installed. Force VM shutdown ++++++++ $strNewVMName ----"   
                      Stop-VM $strNewVMName -Confirm:$false  
                   $Report += $strNewVMName + " --- VMware tools not installed. Force VM shutdown `r`n"   
               }   
           }   
}   
$Report | export-csv "C:\CLIout\GraceorHardfromcriticaloutput.csv"  

Antwort

0

Haben Sie versucht, diese Zeile zu löschen und manuell einzugeben? Denn soweit ich sehen kann, ist alles in Ordnung mit der Linie 12 (hier Code von VMware offizieller Hilfe für diesen Befehl:

$vm = Get-View -ViewType VirtualMachine -Filter @{"Name" = "VM"} 

so vielleicht gibt es einige Kopie \ Paste Ausgaben auch, haben Sie versucht, es in ISE Debuggen? Welche Fehler bekommen Sie?

+1

HALLO - Ich habe es manuell mit dem gleichen Ergebnis eingegeben. $ strNewVMName - Muss es in Anführungszeichen gesetzt werden? Dadurch wird zwar der ursprüngliche Fehler behoben, das Skript beschwert sich jedoch darüber, dass der Begriff "Import-Csv C: \ myfile \ here.csv" nicht erkannt wird und der Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms lautet. Export-Csv macht dann das Offensichtliche und beschwert sich über ein Null-Objekt. Meine CSV-Datei sieht wie folgt aus: "Name" "alte-Test-Maschine" – tvirus

0

Ich habe es herausgefunden. 'Import-Csv C: \ myfile \ here.csv' wird nicht erkannt und der Name eines Cmdlet

Grund war so einfach wie immer der Weg ist. Das betreffende Cmdlet hat nicht mit Powershell 1 funktioniert und der Server, auf dem ich getestet habe, war eine Standardinstallation. Update auf Version 3 nach der Korrektur der fehlenden Zitate und der Viola!

ich tickte 4c74356b41 Antwort, weil das Hinzufügen der fehlenden Anführungszeichen zum nächsten Fehler führte mich, die zur Realisierung ich auf Version führten mich 1.

Jetzt zu sehen, ob ich es gegen jeden Server läuft in der Liste kann erhalten war asynchron dann warten und alles herunterlassen.