Подключение нескольких серверов VCenter и сбор информации с помощью Powercli

У меня есть список серверов VCenter. Они находятся в разных местах и ​​от разных клиентов. Я создал текстовый файл со всеми серверами vcenter и учетными данными, как показано ниже. У меня более 20 серверов Vcenter. Мне нужно собрать информацию о ВМ, хранилищах данных и т. д. (для чего у меня есть скрипты).

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

Я хочу подключиться к каждому серверу VCenter и выполнить свои сценарии. Помогите пожалуйста мне. Заранее спасибо.


person Subhantech    schedule 26.07.2017    source источник
comment
Этот вопрос больше подходит для Serverfault.   -  person Nikolaj Dam Larsen    schedule 26.07.2017
comment
Вы уверены, что хотите хранить пароли в открытом виде? New-VICredentialStoreItem позволяет использовать несколько учетных данных, ссылаться на них, используя [0], [1] и т. д.   -  person user3520245    schedule 31.07.2017


Ответы (2)


Есть несколько способов сделать это, во-первых, вам нужно убедиться, что ваша конфигурация настроена на несколько подключений. Это делается с помощью следующего:

Set-PowerCLIConfiguration -DefaultVIServerMode Multiple

Примечание. Также может потребоваться выполнить следующее, чтобы применить изменение ко всем областям сеанса:

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

После этого вы можете передать несколько имен серверов vCenter в формате строки или массива командлету Connect-VIServer в параметр «Сервер».

Пример использования строк:

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
person Kyle Ruddy    schedule 26.07.2017
comment
Спасибо, Кайл. В моем случае имена пользователей и пароли также могут меняться. У каждого vcenter может быть другой пользователь вместо sysdep и паролей, сгенерированных машиной. - person Subhantech; 27.07.2017

Предположим, у вас есть совершенно секретный CSV-файл, в котором вы храните информацию о соединении (например, полное доменное имя сервера vi, имя пользователя и пароль для входа), который выглядит следующим образом:

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. Либо укажите источник функции, либо просто вставьте ее в свою оболочку. Затем выполните его и поместите вывод в csv следующим образом:

get-vminventory | Export-Csv c:\mycustomerdata\vminfo.csv 
person brendan62269    schedule 03.08.2017
comment
Это потрясающе и именно то, что я искал! - person Naomi See; 25.04.2019