2017-07-26 246 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