автоматический скрипт powershell vmware powerCLI

Я делаю скрипт для запуска в powershell (powerCLI) для vmware. Я пытаюсь сделать автоматический отчет, экспортируемый в файл csv, но я не знаю, как решить пару проблем.

Все параметры, которые я не знаю, как их экспортировать.

  1. "рабочее место виртуальной машины" Я могу экспортировать диски, где находится машина, но я не знаю, как экспортировать все пути с папками.

  2. домен / рабочая группа

  3. Имя компьютера Когда я пытаюсь экспортировать имя, я получаю имя с доменом "name.domainname.com" (это странно, потому что моя виртуальная машина не в домене, а в рабочей группе) имя я имею в виду имя внутри ОС не в esxi, потому что имя esxi vm я получаю от этого

$name = (get-vm name_maschine|выберите имя объекта).name

или просто, когда в цикле параметром является имя машины, я только экспортирую параметр

менее важные параметры

4 . Имя vcenter, в котором работает хост

  1. Название датацентра, в котором работает хост

Код:

connect-viserver -server IP-ADDRES -user root -password PASSWORD 
Get-View -ViewType VirtualMachine | %{ 
    New-Object PSObject -Property @{ 
    # mashine name 
    'Mashine name' = $_.Name 
    #date when edited 
    'Date' = Get-Date 
    # resource pull 
    'pull' = (Get-VM $_.Name | Get-ResourcePool | select-object name).name 
    #disk where is mashine 
    'Datastore' = [system.String]::Join(",",($_.Storage.PerDatastoreUsage | %{Get-View $_.Datastore} | %{$_.Name}))
    }
}

person byrqowy    schedule 24.04.2014    source источник
comment
напишите немного кода, разместите его здесь, и хорошие люди из SO помогут вам исправить то, что не работает. иначе просто лень   -  person Raf    schedule 24.04.2014
comment
извините, я не могу вставить весь код из-за ограничений stackoverflow   -  person byrqowy    schedule 24.04.2014
comment
connect-viserver -server IP-ADDRES -user root -password PASSWORD Get-View -ViewType VirtualMachine | %{ New-Object PSObject -Property @{ # имя машины 'Имя машины' = $_.Name #дата редактирования 'Date' = Get-Date # извлечение ресурсов = (Get-VM $_.Name | Get-ResourcePool | select-object name).name #disk где находится машина 'Datastore' = [system.String]::Join(,,($_.Storage.PerDatastoreUsage | %{Get-View $_.Datastore} | %{$ _.Имя}))   -  person byrqowy    schedule 24.04.2014
comment
только что заметил, что я пропустил центр обработки данных из ответа, добавленного сейчас.   -  person Raf    schedule 25.04.2014


Ответы (1)


Я добавил дополнительные параметры, кроме домена/рабочей группы. Чтобы получить это, вам нужно будет выполнить Invoke-VMScript для каждой виртуальной машины (с учетными данными локального администратора) в сочетании с чем-то вроде (Get-WmiObject Win32_ComputerSystem).Domain

$guestUser = "administrator"
$guestPass = "yourpass"
Get-View -ViewType VirtualMachine | %{ 
    New-Object PSObject -Property @{ 
    # machine name 
    'Machine name' = $_.Name
    # machine name from vmware tools
    'Guest name' = $_.Guest.HostName
    # machine name from WMI
    'Guest name(WMI)' = (Invoke-VMScript -VM $_.Name -GuestUser $guestUser -GuestPassword $guestPass -ScriptText {(Get-WmiObject Win32_ComputerSystem).Domain}).ScriptOutput
    #date when edited 
    'Date' = Get-Date 
    # resource pool 
    'pool' = (Get-VM $_.Name | Get-ResourcePool | select-object name).name 
    #disk where is mashine 
    'Datastore' = [system.String]::Join(",",($_.Storage.PerDatastoreUsage | %{Get-View $_.Datastore} | %{$_.Name}))
    # physical location
    'VM Location' = $_.Config.DataStoreURL.URL
    # vm host
    'VM Host' = (Get-VM $_.Name).VMHost
    # datacenter
    'Datacenter' = (Get-Datacenter -VM $_.Name).Name
    }
}
person Raf    schedule 24.04.2014