2015-12-15 84 views
1

我正在編寫一個PowerShell腳本來創建一個新的Active Directory組,並根據用戶所在的部門自動將其放入正確的OU中。 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本身不是一個串但具有百貨商店屬性的對象的字符串表示。你需要打破字符串。這就是-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)..."

相關問題