2017-07-26 68 views
1

我有一個VCenter服務器列表。他們在不同的地點和不同的客戶。我創建了一個文本文件,其中包含所有vCenter服務器和證書,如下所示。我有20多個Vcenter服務器。我需要收集虛擬機,數據存儲等信息(我有腳本)。連接多臺VCenter服務器並通過Powercli收集信息

Connect-VIServer vcenter0001 -User vcenter0001\sysdep -Password "Passwowrd1" 
Connect-VIServer vcenter0002 -User vcenter0002\sysdep -Password "Passwowrd2" 

我想連接到每個VCenter服務器並執行我的腳本。請幫幫我。提前致謝。

+0

這個問題可能更適合[Serverfault](https://serverfault.com/)。 –

+0

您確定要以明文形式存儲密碼嗎? New-VICredentialStoreItem允許使用多個憑據,使用[0],[1]等引用它們。 – user3520245

回答

0

有幾種方法可以實現這一點,首先您需要確保您的配置設置爲允許多個連接。

Set-PowerCLIConfiguration -DefaultVIServerMode Multiple 

注:這是通過以下完成它也可能需要運行以下命令以強制對所有會話範圍的變化:

Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User 
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope Session 

之後,您可以通過多個vCenter服務器名稱以字符串格式或陣列格式將Connect-VIServer cmdlet添加到「服務器」參數。

示例使用字符串:使用

Connect-VIServer -Server vcenter0001,vcenter0002,vcenter0003 -User sysdep -Password "Password" 

例如數組:

$vCenterNames = @('vcenter0001','vcenter0002','vcenter0003') 
Connect-VIServer -Server $vCenterNames -User sysdep -Password "Password" 

最後,因爲它看起來像您可以使用本地帳戶,而不是一個單一的域帳戶的,你可以看看整合VICredentialStore。這將您的憑證保存在XML文件中,該文件將在驗證時自動引用。

實例應用:

New-VICredentialStoreItem -Host vcenter0001 -User vcenter0001\sysdep -Password "Password" 
New-VICredentialStoreItem -Host vcenter0002 -User vcenter0002\sysdep -Password "Password" 
New-VICredentialStoreItem -Host vcenter0003 -User vcenter0003\sysdep -Password "Password" 
Connect-VIServer -Server vcenter0001,vcenter0002,vcenter0003 
+0

謝謝凱爾,在我的情況下,用戶名和密碼也可以改變..每個vCenter可以有不同的用戶,而不是sysdep和機器生成的密碼。 – Subhantech

0

假設你有,你存儲連接信息絕密csv文件(即VI服務器FQDN,登錄用戶名和密碼),看起來是這樣的:

viserver, username, password 
myfav.cust1.org, cust1usr, cust1pw 
my2fav.cust2.net, cust2usr, cust2pw 
myleastfav.cust3.com, cust3usr, cust3pw 

它被保存在:c:\mysecretdocs\custviservers.csv 你可以使用import-csv和一個foreach語句來做一個看起來像這樣的函數的髒東西:

function get-vminventory 
{ 
    $viCntinfo = Import-Csv c:\mysecretdocs\custviservers.csv 
    foreach ($vi in $viCntInfo) 
    { 
     $convi = connect-viserver -server $vi.viserver -username $vi.username -password $vi.password 
     $vms = get-vm 
     $vms | select name, MemoryGB, NumCpu, 
      @{ n = "hostname"; e = { $_.guest.hostname } }, 
      @{ n = "ip"; e = { $_.guest.ipaddress -join ", " } }, 
      @{ n = "viserver"; e = { $convi.Name } } 
     $discvi = disconnect-viserver -server * -force -confirm:$false 
    } 
} 

您可以在其中運行任何PowerCLI清單或自定義命令,並選擇所需的任何輸出,這只是使用Get-VM的一個示例。要麼點源功能,要麼將其粘貼到你的shell中。然後執行它並把輸出放在一個csv中,像這樣:

get-vminventory | Export-Csv c:\mycustomerdata\vminfo.csv