Команда GetType (). InvokeMember - PullRequest
       10

Команда GetType (). InvokeMember

1 голос
/ 27 марта 2020

Я пытаюсь получить список пользователей RDP с включенным членом группы из AD Computer OU. Почему-то я не могу получить полное имя пользователя в другом домене, частью которого я не являюсь. ADSPath показывает правильный WinNT: // DOMAIN / имя пользователя. Но полное имя не указано. Любая помощь будет оценена. Полное имя правильно указано для домена, частью которого я являюсь. В файле OU.csv содержатся сведения о подразделении компьютера и о сервере домена.

$Properties = "AdsPath","Name","FullName"

$Select = $Properties | %{  
  Invoke-Expression "@{n='$_';e={ `$_.GetType().InvokeMember('$_', 'GetProperty', `$Null, `$_, `$Null) }}"  
}

$OUData = import-csv c:\change\OU.csv
$OUexport = foreach($OU in $OUdata)
{
$OUpath = $OU.ou
$server = $OU.server

Get-ADComputer -filter * -Property * -SearchBase $OUpath -Server $server  | Select-object Name,DNSHostName,Description | ForEach-Object {

  $ComputerName = $_.Name
  $Description = $_.description
  $DNSHostname = $_.DNSHostName
  $Group = [ADSI]("WinNT://$DNSHostname/Remote Desktop Users")  
  $Group.PsBase.Invoke("Members") | Select-Object ([Array](@{n='Workstation';e={ $ComputerName }},@{n='Comp_Description';e={ $Description }}) + $Select)

} } 
$OUexport | export-csv c:\change\RDP_Enable.csv -NoTypeInformation

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете попытаться избежать выражения Invoke-Expression и заключить его в одинарные кавычки, но это не расширит значение:

$Select = $Properties | ForEach { @{n="$_"e={ $_.GetType().InvokeMember("$_","GetProperty", $Null, $_, $Null) }}}
...