早上好,
我正在尝试使用包含用户列表的CSV文件,并自动执行该过程以将AD用户extensionAttribute15设置回“notset”值。
我使用类似的代码来填充属性,CSV文件只包含两件事,即用户LAN ID和属性值。
填充字段不是问题,将值更改回“未设置”已经。
这是我正在使用的代码。
Import-module ActiveDirectory
Import-CSV "code.csv" | % {
$User = $_.cn
$user.Put(“extensionAttribute15”, @())
$user.SetInfo()
}
以下是错误。
方法调用失败,因为[System.String]不包含名为“Put”的方法。 在attribute.ps1:4 char:10 + $ user.Put<<<< (“extensionAttribute15”,@()) + CategoryInfo:InvalidOperation :( Put:String)[],RuntimeException + FullyQualifiedErrorId:MethodNotFound
方法调用失败,因为[System.String]不包含名为“SetInfo”的方法。
在attribute.ps1:5 char:14
+ $ user.SetInfo<<<< ()
+ CategoryInfo:InvalidOperation:(SetInfo:String)[],RuntimeException
+ FullyQualifiedErrorId:MethodNotFound
任何想法可能是什么问题?
谢谢,
答案 0 :(得分:3)
当您阅读CSV文件时,生成的对象只是简单的属性包。他们不支持任何特殊方法,他们只持有平面数据。这些对象中没有任何内容存在于CSV文件本身的文本中。
如果要获取具有Active Directory上下文和功能的富对象,则需要从ActiveDirectory模块中的cmdlet获取一个。
这样的事情可能就像你需要的那样
Import-module ActiveDirectory
Import-CSV "code.csv" | % {
$user = Get-ADUser $_.cn # get a rich object from the AD module, by passing a string
$user.Put(“extensionAttribute15”, @())
$user.SetInfo()
}