2015-12-15 3 views
1

Я пишу сценарий PowerShell для создания новой группы Active Directory и автоматически помещаю ее в правильное подразделение, в зависимости от того, в каком отделе находится пользователь. Сценарий получает отдел от пользователь в Active Directory, а затем должен использовать это как имя OU в активном каталоге. Когда я не использую переменную в AD-пути, этот скрипт работает.Строковая переменная в пути Active Directory не работает

[string]$department = Get-ADUser -identity johndoe -properties department | Select department 

New-ADGroup -Name NewADGroup -GroupScope Global -path “OU=($department),OU=SubDepartment,OU=MainDepartment,DC=OrgName” 

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

New-ADGroup : The object name has bad syntax 
At C:\Users\JohnDoe\Desktop\CreateNewGroup.ps1:7 char:1 
+ New-ADGroup -Name NewADGroup -GroupScope Global -path 
"OU=($department ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (CN=NewADGroup,DC=OrgName 
    :String) [New-ADGroup], ADException 
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirec 
    tory.Management.Commands.NewADGroup 

Как я могу назвать эту переменную внутри пути Active Directory?

+4

'($ department)' должен быть '$ ($ department)' или просто '$ department' –

ответ

4

Вы на самом деле есть 2 вопроса здесь, которые являются распространенными ошибками.

  1. $department не является строкой, но само по себе строковое представление объекта со свойством deparment. Вам нужно сломать строку. Это то, для чего был -ExpandProperty. Если вы посмотрели на свой department, теперь вы увидите что-то вроде @{Department="IT"}

  2. У вас также возникают проблемы с переменным расширением в строках.

[string]$department = Get-ADUser -identity johndoe -properties department | Select -Expandproperty department 

New-ADGroup -Name NewADGroup -GroupScope Global -path "OU=$department,OU=SubDepartment,OU=MainDepartment,DC=OrgName" 

Если вы не вызывая свойства или сложный объект, то удаление скобок достаточно. Кроме того, вы можете просто использовать подменю "OU=$($department),OU=SubDepartment,OU=MainDepartment,DC=OrgName". Без знака $ скобки считались частью строки.

2

попробовать знак доллара перед открывающей скобкой, как это: "OU=$($department)..."

Смежные вопросы