这是我第一次尝试将参数传递给new-aduser。错误消息不是很有帮助。
是否需要保持特殊顺序?我已经一遍又一遍地检查了清单
PS C:\Windows\system32> $params
new-aduser $Params -WhatIf
new-aduser $Params
Name : DidItwork
City : SomeCity
Department : My Department
Description : This is my description
EmailAddress : copy.me@mycompany.com
Fax : 480-555-1216
GivenName : Copy
HomePhone : 480-555-1213
Initials : CM
MobilePhone : 480-555-1215
Office : This my office
OfficePhone : 480-555-1212
POBox : PO BOX
PostalCode : 90210
State : SomeState
streetAddress : 1234 Elm St
Surname : Me
Title : My Job Title
ChangePasswordAtLogon : True
path : OU=Whatever,DC=,DC=mycompany,DC=com
server : MYSERVER
What if: Performing the operation "New" on target "CN=@{Name\=DidItwork\; City\=SomeCity\; Department\=My Department\; Description\=This is my description\; Emai
lAddress\=copy.me@mycompany.com\; Fax\=480-555-1216\; GivenName\=Copy\; HomePhone\=480-555-1213\; Initials\=CM\; MobilePhone\=480-555-1215\; Office\=This my offic
e\; OfficePhone\=480-555-1212\; POBox\=PO BOX\; PostalCode\=90210\; State\=SomeState\; streetAddress\=1234 Elm St\; Surname\=Me\; Title\=My Job Title\; ChangePas
swordAtLogon\=True\; path\=OU\=Whatever\,DC\=mycompany\,DC\=com\; server\=MYSERVER},CN=Users,DC=,DC=mycompany,DC=com".
new-aduser : The parameter is incorrect
At line:3 char:1
+ new-aduser $Params
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (CN=@{Name\=DidI...mycompany,DC=com:String) [New-ADUser], ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:87,Microsoft.ActiveDirectory.Management.Commands.NewADUser
PS C:\Windows\system32>
这是整个脚本。我基本上是将现有帐户复制到具有某些已更改属性命名标准的同一OU中。目前,这是一个只有一个测试帐户的OU。 Prod运行将在大约50个不同的OU中运行大约900个帐户
CLS
# ===============================================================================
$ADServer = myserver"
$SearchOU = "OU=Whatever,DC=mycompany,DC=com"
#================================================================================
$toProcess = get-aduser -filter {enabled -eq $true} -searchbase $SearchOU -Property * -server $ADServer | Sort Samaccountname | Select -First 10
$toProcess | ForEach-Object {
$DN = ($_.DistinguishedName -split "OU=",2)[1]
#$_ = "CN=" + $last +"."+ $first + ",OU=" + $DN
$_OU = "OU=" + $DN
$Params = [PSCustomObject]@{
Name = diditwork
City = $_.city
Department = $_.Department
Description = $_.Description
EmailAddress = $_.EmailAddress
facsimileTelephoneNumber = $_.facsimileTelephoneNumber
Fax = $_.Fax
GivenName = $_.GivenName
HomeDirectory = $_.HomeDirectory
HomePhone = $_.HomePhone
Initials = $_.Initials
Manager = $_.Manager
MobilePhone = $_.MobilePhone
Office = $_.Office
OfficePhone = $_.OfficePhone
POBox = $_.POBox
PostalCode = $_.PostalCode
SamAccountName = $_.SamAccountName
State = $_.State
streetAddress = $_.streetAddress
Surname = $_.Surname
Title = $_.Title
Path = $_ou
}
$Params.PSObject.Properties | ForEach-Object {if ($_.value -eq $null) { $Params.PSObject.properties.remove($_.name) }}
Write-host "==================================OLD ACCOUNT========================================================="
$_
Write-host "==================================NEW ACCOUNT========================================================="
$Params
Write-host "======================================================================================================"
new-aduser @Params -WhatIf
Write-host "======================================================================================================"
new-aduser @Params
Write-host "======================================================================================================"
#$CopyFromUser = Get-ADUser $OldAcc.SamAccountName -prop MemberOf -server $ADServer
#$CopyToUser = Get-ADUser $Params.SamAccountName -prop MemberOf -server $ADServer
#$CopyFromUser.MemberOf | Where{$CopyToUser.MemberOf -notcontains $_} | Add-ADGroupMember -Member $CopyToUser -server $ADServer
}
答案 0 :(得分:0)
这使我朝着正确的方向前进。我猜New-Aduser不喜欢PSCustomObject
$Params = @{
Name = "diditwork"
}
New-aduser @params
$Params = [PSCustomObject]@{
Name = "diditwork2"
}
New-aduser @params