Я пытался использовать Powershell с импортированными командами PowerCLI для администрирования VMware, и я попал в ловушку. То, что я пытаюсь сделать, - это запросить все виртуальные машины в местоположении (неважно, где), и для каждой виртуальной машины я хочу, чтобы группа имела разрешение «Виртуальный компьютер с моментальным снимком», а затем использовать это имя группы для запуска Get -ADGroupMembers запрос для всех в этой группе. Я также должен удалить префикс домена из запроса AD, который в противном случае вызывал бы ошибку.vCenter Запрос полномочий VM с использованием Powershell/PowerCLI
После того, как вы играете с информацией о хэш-таблице в csv, в отличие от «SystemObject []», я наконец получил скрипт, чтобы он не возвращал ошибки. ИСКЛЮЧАЕТСЯ на виртуальных машинах, где имеется более одной группы. Он выдает ошибку, но сценарий продолжается и просто выводит члены первой группы.
Как это сделать, чтобы сделать рекурсивный запрос AD для каждой группы, которая вытащили в хэш-таблицу групп владельца? Результат будет таким же, как и для всех других виртуальных машин, только с линией для каждой группы и членов.
$AllVMs = @()
$vms = get-vm * -Location datacenter
foreach ($vm in $vms)
{
$owners = Get-VIPermission $vm.name | where-object {$_.role -eq "virtual machine user with snapshot"}
foreach ($owner in $owners)
{
$members = Get-ADGroupMember ($owners.principal -replace '^prefix\\')
$temp = New-Object psobject |
Add-Member Noteproperty "Name" -value $vm.name -PassThru |
Add-Member Noteproperty "Owner" -value (@($owners.principal) -join ',') -PassThru |
Add-Member Noteproperty "Members" -value (@($members.SamAccountName) -join ',') -passthru
$AllVMs+=$temp
}
$AllVMs | Export-Csv -Path c:\users\me\desktop\AllVMs.csv
Сравнение двух, похоже, это было одним из изменений, которые мне нужно было сделать - спасибо! –