POWERSHELL - Модуль Active Directory команда New-AdGroup Проблема с пробелами в значении OU = "Servers Of Files" - PullRequest
0 голосов
/ 28 мая 2020

Мне нужна ваша помощь с использованием команды New-AdGroup.

Цель моего скрипта - проверить, существует ли группа Active Directory, и если она не существует, скрипт создает группу и добавить члена группы в определенное c OU.

Но моя проблема заключается в том, что я использую сценарий с комбинацией OU, и одно из них содержит несколько пробелов в своем имени (например: «OU = Серверы файлов "), сценарий возвращает ошибку.

Пример: мне нужно добавить группу в" OU = Fileserver1 ", которая является подчиненной OU" OU = Servers of Files ", которая является подчиненной OU "OU = Groupes". Когда я вызываю New-AdGroup со значением пути: «Ou = ServerFile1, OU = Servers of Files, OU = Groupes, DC = Contoso, DC = lan», я получаю следующую ошибку.

New-ADGroup: Objet de l'annuaire non Trouvé В строке: 29 символов: 5 + New-ADGroup -Name "$ DLGroupName" -Path "$ Orga" -GroupCategory "Se ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (CN = G_GROUP1 ... ONTOSO, DC = lan: String) [New-ADGroup], ADIdentityNotFoundException + FullyQualifiedErrorId: Objet de l ' annuaire non Trouvé, Microsoft.ActiveDirectory.Management.Commands.NewADGroup

Проблема вызвана «OU = Servers of Files», потому что я пытался использовать OU без пробелов, и оно работало.

Найдите часть скрипта ниже, дайте мне знать, как я могу управлять пробелами по пути:

#Variable    
$CurrentDomain = Get-ADDomain | Select -Property DistinguishedName
$TargetOU = "OU=FileServer1,OU=Servers of Files,OU=Groupes" #
$OrganizationalUnitDN = $TargetOU+","+ $CurrentDomain.DistinguishedName
$Orga = $OrganizationalUnitDN
$DLGroupName = "DL_FileServer1_TEST"
$Description = "\\FileServer1\Share\Test"


    New-ADGroup -Name "$DLGroupName" -Path "$Orga" -GroupCategory "Security" -GroupScope "Global" -Description "$Description" -PassThru 

Примечание: $ Orga = Ou = ServerFile1, OU = Servers of Files, OU = Группы, DC = Contoso, DC = lan

1 Ответ

0 голосов
/ 28 мая 2020

Когда мы сталкиваемся с такими странными ошибками, как эта, хороший первый тест - это вручную запустить команду без переменных, чтобы найти root причину ошибки. Это показывает нам, что нам не нужно экранировать пробелы с помощью последовательности \ или \20, и этот маршрут нам не поможет.

Потому что я могу запустить вашу команду без ошибок, когда вручную расширю переменные следующим образом:

New-ADGroup -Name "DL_FileServer1_TEST" -Path "OU=Servers Of Files,DC=FoxDeploy,DC=local" `
   -GroupCategory "Security" -GroupScope "Global" -Description "Test" -PassThru


DistinguishedName : CN=DL_FileServer1_TEST1,OU=Servers Of Files,DC=FoxDeploy,DC=local
GroupCategory     : Security
GroupScope        : Global
Name              : DL_FileServer1_TEST1
ObjectClass       : group
ObjectGUID        : 5889f8ea-9d80-4609-ad47-92e50a574088
SamAccountName    : DL_FileServer1_TEST1
SID               : S-1-5-21-3818945699-900446794-3716848007-32100

Теперь, когда я знаю, что это работает, я знаю, что затем могу сохранить значения в переменных чтобы было удобнее читать, например:

$params = @{
    Name = "DL_FileServer1_TEST1";
    Path = "OU=Servers Of Files,DC=FoxDeploy,DC=local";
    GroupCategory = "Security";
    GroupScope = "Global";
    Description = "My Test Group"
    PassThru = $true 
    }

New-ADGroup @params 

Если бы мне пришлось угадывать, держу пари, что вам нужно запустить весь скрипт для заполнения всех переменных, а вместо этого вы повторно выполняете последнюю команду снова и снова, но одна из переменных - $null.

Если это не сработает ... Если нет, то уверены ли мы, что контейнер Ou=ServerFile1 тоже существует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...