方法调用失败system.string错误

时间:2013-08-13 14:01:10

标签: powershell

早上好,

我正在尝试使用包含用户列表的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

任何想法可能是什么问题?

谢谢,

1 个答案:

答案 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()  
}