在inputCSV文件时移动ADObject错误

希望你能帮助!

在我工作的地方,当我们创build一个用户的时候,对象被放在“CN =>用户的全名”,OU = Something1,OU = Something2,DC = SomethingElse,DC = local。

从那里,用户对象需要被移动到两个后续的OU中的一个OU中(OU = Region1和OU = Region2)。

因此,用户对象的最终“目的地”是: OU=Region1,OU=Something1,OU=Something2,DC=SomethingElse,DC=localOU=Region2,OU=Something1,OU=Something2,DC=SomethingElse,DC=local

这可以通过PowerShell cmdlet“Move-ADObject”来实现。 inputMove-ADObject -identity "CN=CannonicalName,OU=OU2,OU=OU1,DC=Something,DC=local" -targetpath "OU=Region1/2,OU=OU2,OU=OU1,DC=Something,DC=local" (因为你可能都非常清楚)。

在创build过程中,我们使用.csv文件input我们创build的用户的详细信息 – 我们input的详细信息如下: Name,SamAccountName,displayName,givenName,title,surname,initials,EmailAddress,UserPrincipalName,HomeDrive,HomeDirectory,Company,PostalCode,City,StreetAddress,OfficePhone,country

我想要做的是,我想在同一个文件夹中创build两个.PS1文件 – 一个将CSV文件中的“Name”参数(因为新的用户名已经存在)传递给Region1“sub” – OU,一个用于Region2“sub”-OU – 但是当我创build的文件完全包含下面的代码时,它会失败: Import-CSV C:\Path\To\CSV\file.csv | Move-ADObject -identity "CN=$_.Name,OU=OU2,OU=OU1,DC=Something,DC=local" -targetpath "OU=Region1/2,OU=OU2,OU=OU1,DC=Something,DC=local" Import-CSV C:\Path\To\CSV\file.csv | Move-ADObject -identity "CN=$_.Name,OU=OU2,OU=OU1,DC=Something,DC=local" -targetpath "OU=Region1/2,OU=OU2,OU=OU1,DC=Something,DC=local"

是这样, Move-ADObject不能从CSV文件中input – 或者我犯了一个错误(如果是的话 – 我的错误是什么)? 我在PowerShell脚本方面绝对不是初学者,所以我希望这里有人能帮上忙。

有关显示版本信息的屏幕截图以及出现的错误消息,请参阅http://i211.photobucket.com/albums/bb33/DKDexter999/SS_HostInfo_ErrorMsg.png

我发现它更容易获得对象,然后移动对象。 在使用pipe道时,您需要将AD对象传递给Move-ADObject,或者可以传递完成的标识。 因此,您将检索ADUser,然后对其执行预处理操作,即将其传递给Move-ADOject。

 Import-CSV C:\Path\To\CSV\file.csv | ForEach-Object { Get-ADUser -Identity $_.Name | Move-ADObject -targetpath "OU=Region1/2,OU=OU2,OU=OU1,DC=Something,DC=local" } 

如果你能确定可以在飞行中build立整个身份string,那么你的方法可能是可能的。 但是,CSV必须包含标识string,“CN =testing用户,OU = OU2,OU = OU1,DC =某事,DC =本地”

我似乎无法添加评论的其他答案,但我可以解释为什么你有string问题。 它与引用string中的$ _variables扩展有关。 你可以在这里看到这个。

 PS C:\> Import-Csv .\test.csv | %{$_.name} Test User PS C:\> Import-Csv .\test.csv | %{"$_.name"} @{Name=Test User; SamAccountName=TU; displayName=Test User}.name PS C:\> Import-Csv .\test.csv | %{"$($_.name)"} Test User 

我的test.csv文件包含:

 Name,SamAccountName,displayName Test User,TU,Test User 

string扩展只是parsingstring中的$ _,使用$([variable])告诉powershell扩展string中的variables。

所以使用这应该工作

 Import-CSV C:\Path\To\CSV\file.csv | %{ Move-ADObject -identity "CN=$($_.Name),OU=OU2,OU=OU1,DC=Something,DC=local" -targetpath "OU=Region1/2,OU=OU2,OU=OU1,DC=Something,DC=local" } 

认为你想要在%{}中包装move-adobject

Import-CSV C:\ Path \ To \ CSV \ file.csv | %{Move-ADObject -identity“CN = $ _。名称,OU = OU2,OU = OU1,DC =某事,DC =本地”-targetpath“OU = Region1 / 2,OU = OU2,OU = OU1,DC =东西,DC =本地“}

也没有听起来的意思,我希望你有一个testing\开发环境域开发\testing这些东西。

好吧,我得到了同样的错误,迫使我的大脑仔细检查“OU”path。 我确信这是对的。 直到我再次检查并意识到我在目标的path上排除了整个OU。 快速修复,确保你提供的对象被移动的确切path。 相信我,仔细检查你的path。 我浪费了/花了30分钟。 不需要的,因为我的路是错的。

例:

我input“OU = _Staging,OU = CHA,OU =委托OU,DC =,DC =,DC =”

我不得不添加缺less的“工作站”OU,见下文:

然后键入:OU = _Staging,OU =工作站,OU = CHA,OU =委派的OU,DC =,DC =,DC =“

希望这可以帮助别人!