使用select过滤用户,然后更新其中一个属性

时间:2015-03-20 16:32:02

标签: windows powershell active-directory

我正在尝试查找具有Null属性terminalservicesprofilepath的AD用户,并在同一命令中更新此属性。

我可以选择用户,但如何“动态”更新属性?

Get-ADUser -Filter {(ObjectClass -eq "user") -and (Enabled -eq $true)} -server $DC[1] -Properties * | select SAMAccountName,displayName,DistinguishedName,Mail,Homemdb,@{Name="TSP";Expression={([adsi]("LDAP://$($_.distinguishedName)")).psbase.InvokeGet("terminalservicesprofilepath")}} | where {($_.DistinguishedName -match ".OU=USERS.") -and ($_.TSP -eq $null)} 

1 个答案:

答案 0 :(得分:0)

基于此Hey, Scripting Guy

我认为你可以做到:

([adsi]("LDAP://$($_.distinguishedName)")).psbase.InvokeSet("terminalservicesprofilepath",$newPath)

您只需要在初始查找后将该命令压入,然后执行SetInfo()。

如果像博客文章中那样将初始的Get-ADUser运行到变量中,那么可能最简单,因此您可以使用其中的对象:

$users = "huge Get-ADUser command"
foreach ($u in $users)
{
    $foo = [ADSI]("LDAP://$u.DistinguishedName")
    $foo.psbase.InvokeSet("terminalservicesprofilepath",$newPath)
    $foo.SetInfo()
}