2016-03-31 5 views
1

最初の投稿ですが定期的な訪問者です。 私は、.csvのvSphereマシンのリストでシャットダウンを開始するためにpowershellスクリプトを一緒にしようとしています。 vSphereのバージョンは5.1u2、vcenterのバージョンは2008 R2です。 psスクリプトの最初にpowercliを読み込んでいます。PowershellスクリプトでVMSをシャットダウンする - erros

私のニーズに正確に合うように見えるスクリプトが見つかりましたが、問題がいくつかあるようです。私はオリジナルへのリンクを投稿できるかどうかわからないので、ここに行く。

ここに私の試行を試みます。 Powershellは、特定の状態が検出されたときにツールを監視することによって開始することができるように使用されます。

この状態では、12行目の文字44でassigment expression errorが返されます。このスクリプトではそれ以上の問題があるようですが、「import-csvという用語はコマンドレットとして認識されます "。

私はどんなポインタにも感謝しています - ドッジコードの挿入については申し訳ありません!

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

答えて

0

この行を削除して手動で入力してみましたか?私の知る限りすべてがライン12を有する微細なので(ここでは、このコマンドのためのVMwareの公式ヘルプからコードです:?

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

はので、多分、いくつかのコピーがあります\ペーストの問題はまた、あなたがISEでそれをデバッグしてみたのですか?あなたはどのようなエラーが出るのですか?

+1

HI - 同じ結果を手動で入力しました。 $ strNewVMName - 引用符で囲む必要がありますか?そうすることで元のエラーは取り除かれますが、「Import-Csv C:\ myfile \ here.csv」という用語は認識されず、コマンドレット、関数、スクリプトファイル、または実行可能なプログラムの名前は認識されません。 Export-Csvは、明らかにして、ヌルオブジェクトについて文句を言います。私のCSVファイルはこのような "名前" "古いテストマシン" – tvirus

0

'Import-Csv C:\ myfile \ here.csv'は認識されず、コマンドレットの名前

理由はとても簡単です。問題のコマンドレットは勝った;私がテストしていたサーバーはpowershell 1で作業したが、デフォルトのインストールだった。不足している引用やビオラを修正した後、バージョン3に更新されました!

欠落している引用符を追加すると、私はそれは、リスト内のすべてのサーバーに対して実行して得ることができるかどうかを確認するために、バージョンさて1.

にあったの実現に私を導いた次のエラーに私を導いたので、私は4c74356b41の答えをチェックさ非同期的に待機し、すべてを残しておきます。

関連する問題