Я пытаюсь получить все электронные письма и имена пользователей из Active Directory из определенного Organization Unit с помощью powershell. Это мой код:

function Invoke-CmdCommand {
    Param(
        [parameter(position = 0)]
        $Cmd , 
        [parameter(position = 1)]
        $RunFolder = $PSScriptRoot
    )
    try {
        $cmdToRun = "cmd /c cd `"$RunFolder`" `"&`" $Cmd";
        Write-Host "$RunFolder> $Cmd";
        Invoke-Expression "& $($cmdToRun.Replace("^","^^"))";
    }
    catch {
        Write-Error "********** Function $($MyInvocation.MyCommand.Name) failed **********";
        Write-Error $_.Exception.Detail.InnerText;
        exit 1;
    }
}


$cmd = "dsquery user `"OU=Disabled Users,DC=microfinancial,DC=com`" -limit 10000 | dsget user -samid -email"

$test = Invoke-CmdCommand -Cmd $cmd

И я получаю следующую ошибку:

Ошибка dsget: значение "Целевой объект для этой команды" имеет неправильный формат. введите dsget /? за помощью.

Что я могу сделать?

0
Dmitrij Kultasev 23 Окт 2018 в 18:22

2 ответа

Лучший ответ

Как указано в комментарии выше, вам гораздо лучше использовать Get-ADUser. Это даст вам массив объектов, которые содержат только имя пользователя и адрес электронной почты:

Import-Module ActiveDirectory
Get-ADUser -Filter * -SearchBase "OU=Disabled Users,DC=microfinancial,DC=com" `
    -Properties SamAccountName,EmailAddress `
  | Select-Object SamAccountName,EmailAddress

Если Import-Module ActiveDirectory у вас не работает, установите RSAT (при условии, что вы используете Windows 10): https://www.microsoft.com/en-ca/download/details.aspx?id=45520

Или, если вы используете это в серверной версии Windows:

Import-Module ServerManager
Add-WindowsFeature RSAT-AD-PowerShell
1
Gabriel Luci 23 Окт 2018 в 15:36

Если все, что вы пытаетесь сделать, это электронные письма и имена пользователей из Active Directory, Get-ADUser, который включен в модуль ActiveDirectory, является предпочтительным маршрутом.

-SearchBase позволит вам охватить OU, с которого вы хотите начать. Вам нужно будет указать, какие свойства вы хотите включить в Get-ADUser, используя -Properites. Select покажет только те свойства, которые вы хотите использовать.

В следующем примере будут получены имена всех пользователей (samaccountname) и основной адрес электронной почты:

Get-ADUser -filter * -Properties SamaccountName, mail -SearchBase "DC=domain,DC=local" | Select SamaccountName, Mail
1
jrider 23 Окт 2018 в 18:46
52952630