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"
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