2016-03-31 25 views
1

İlk gönderi ancak düzenli ziyaretçi. Bir .csv dosyasındaki vSphere makinelerinin bir listesindeki kapanmaları başlatmak için bir powershell komut dosyasını birlikte çalmaya çalışıyorum. vSphere, 5.1u2 sürümündedir ve vcenter, 2008 R2 üzerinde çalışır. Ben ps komut dosyasının başında powercli şeyler yüklüyorum.Kapatmak için Powershell betiği VMS - erros

Gereksinimlerime tam olarak uyuyor gibi görünen bir komut dosyası buldum, ancak birkaç sorunu var gibi görünüyor. Orijinaline bağlantılar gönderebileceğimden emin değilim, bu yüzden burada gider.

Çalışmaya başladım. Powershell kullanılır, böylece belirli bir durum tespit edildiğinde izleme araçları tarafından başlatılabilir.

Bu durumda satır 12 karakter 44'teki bir ifade ifadesi hatası verir. Yine de, komut dosyasında yanlış olandan çok daha fazlası var gibi görünüyor ve farklı şeyler denemek de dahil olmak üzere çeşitli hatalar verdi "Import-csv terimi terimi değil cmdlet olarak tanınır.

Herhangi bir işaretçi için minnettarım - Tehlikeli kod ekleme için üzgünüm!

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

cevap

0

Bu satırı silmeyi ve el ile yazmayı denediniz mi? Çünkü bildiğim kadarıyla herşey hattı 12 ile gayet gördüğünüz gibi (burada bu komut için VMware resmi yardımından kod:

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

belki orada, Ayrıca bazı kopya \ yapıştırma sorunları olduğunu sen İMKB'de bunu ayıklama çalıştın?? hangi hata alıyorum?

+1

HI - Elle aynı sonucu yazdım. $ strNewVMName - tırnak işaretleri içinde olması gerekiyor mu? Bunu yapmak, orijinal hatayı kaldırır ancak komut dosyası, 'Import-Csv C: \ myfile \ here.csv' teriminin tanınmaması ve cmdlet'in, işlevinin, komut dosyasının veya çalıştırılabilir programın adıyla ilgili olarak şikayette bulunur. Export-Csv daha sonra açık ve boş bir nesne hakkında şikayet ediyor. Benim csv dosyam bu "İsim" "eski test makinesi" gibi görünüyor – tvirus

0

Şekil verilmiş. 'Import-Csv C: \ myfile \ here.csv' tanınmıyor ve bir cmdlet'in adı

Nedeni her zaman olduğu gibi çok basitti. Söz konusu cmdlet, powershell 1 üzerinde çalışmadı ve test ettiğim sunucu varsayılan bir kurulumdu. kayıp tırnak ve viyolaları tamir ettikten sonra 3. versiyona güncellendi! Eksik tırnak işareti ekleyerek ben

sürümüne 1. oldu gerçekleştirerek götürdü sonraki hata götürdü çünkü

Ben o listedeki her sunucuda karşı çalışan alabilirsiniz Şimdi eğer görmek için 4c74356b41 cevabını işaretli Zaman uyumsuz olarak bekleyip durdurulan her şeyi kapat.

İlgili konular