Я пытаюсь получить все электронные письма и имена пользователей из 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 /? за помощью.
Что я могу сделать?
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
Если все, что вы пытаетесь сделать, это электронные письма и имена пользователей из 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
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.