尝试导入大量用户列表以进行 mac 身份验证。我可以创建用户,但无论我如何尝试,都无法将他们添加到本地组。我不断收到“传递了无效的目录路径名”的添加函数提示。
实际的错误如下:
Method invocation failed because [System.DirectoryServices.DirectoryEntry] does not contain a method named
'op_Addition'.
At C:\Users\Administrator\Desktop\Import Script\Import1.ps1:12 char:2
+ $objuser = [ADSI]"WinNT://RadiusSVR/" + $_.MAC
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Exception calling "Add" with "1" argument(s): "An invalid directory pathname was passed
$Computername = $env:COMPUTERNAME
$objgroup = [ADSI]"WinNT://./TEST"
$target = [ADSI]"WinNT://$Computername"
Import-Csv testlist1.csv | ForEach-Object {
$newuser = $target.Create("user", $_.MAC)
$newuser.SetPassword($_.MAC)
$newuser.SetInfo()
$newuser.FullName = ($_.NAME)
$newuser.SetInfo()
$newuser.psbase.InvokeSet('AccountDisabled', $false)
$newuser.SetInfo()
$objuser = [ADSI]"WinNT://./" + $_.MAC
$objgroup.Add($objuser)
}
我尝试用 WinNT://RadiusSVR 替换 WinNT://.,但出现同样的问题,如果我尝试 WinNT://$Computername,也会出现同样的问题。
在有人问之前,是的,我的意思是将用户名和密码设置为 mac 地址。用户创建得很好,但问题是让他们进入该组。
答案1
请尝试以下操作:
$objuser = [ADSI]"WinNT://./$($_.MAC)"
$objgroup.Add($objuser)
答案2
您不使用 New-ADUser 和 Add-ADGroupMember cmdlet 的原因是什么?
尝试改变这个
[ADSI]"WinNT://./" + $_.MAC
对此
[ADSI]("WinNT://./" + $_.MAC)
您已将其转换"WinNT://./"
为 ADSI 对象,然后尝试添加,$_.Mac
但这样做不起作用。创建整个字符串,然后将其转换为 ADSI 对象。
答案3
最后,在对包含 $objuser 的行进行多次迭代后,有人在另一个论坛上建议这样做。它毫不费力地就成功了。
无论我尝试什么其他方法,它都会抛出类型不匹配错误。
$Info = Import-CSV -Path "C:\Users\Administrator\Desktop\Import Script\testlist1.csv"
foreach ($user in $Info)
{
#Create the user using the property from the CSV called Name
net user $user.MAC /add;
#Set the user's password to the property from the CSV called MAC
net user $user.MAC $user.MAC
#Actually add them to group
net localgroup "TEST" /add $user.MAC}