从get-ADUser

时间:2015-06-04 04:35:16

标签: powershell active-directory

所以我正在写剧本, 在我们公司,我们将用户主目录存储在网络驱动器上, 当他们离开时,我们通过将.left添加到文件夹名称来重命名目录, 例如:" name.left" 我们实际上是通过在AD中查找用户来实现的 复制主目录属性的内容并重命名它。 所以我到目前为止得到了这个:

$name = Read-Host 'User Name: '
$path = Get-ADUser $name -Properties homedirectory
Rename-Item $path {$name+".left"}

问题是,当我在get-aduser中获得home-directorys路径时,它会使用标准的get-aduser输出,它只是将它添加到输出中,所以我尝试使用过滤器:

$path = Get-ADUser $name -Properties homedirectory -Filter homedirectory 

它给了我一个错误,但不是过滤器,现在它没有识别我给它的用户名。

现在,我确定有一种方法可以过滤属性中的字符串。 我觉得我写的第三行可能是错的,好吧, 但那是我的python大脑试图与powershell合作:)所以如果enyone可以帮助我那个,我会非常感激, 如果有人能指出我那些非常好的PowerShell指南。

修改 所以我修理它看起来像那样:

$name = Read-Host 'User Name: ' $date = Read-Host 'Date Please: ' do { $path = Get-ADUser $name -Properties homedirectory | select -Expand HomeDirectory $newname = {$name + "LFT" + $date} Rename-Item $path $newname Write-Host $name + 'changed' } while ($name -ne 'exit')

我得到一个错误,新名称是一个脚本,而不是一个字符串,所以它无法运行,你知道一种方法来解决它吗?

Rename-Item:无法评估参数' NewName'因为它的参数被指定为脚本块而没有 输入。如果没有输入,则无法评估脚本块。 在线:6 char:19 + Rename-Item $ path $ newname + ~~~~~~~~     + CategoryInfo:MetadataError:(:) [Rename-Item],ParameterBindingException     + FullyQualifiedErrorId:ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.RenameItemCommand

EDIT2 一位同事帮助我,这就是结果: 它完全符合我的需要:)

$name = Read-Host 'User Name '
$homefolder =  (Get-ADUser $name  -Properties HomeDirectory).homedirectory
$date =  Get-Date -UFormat "%d.%m.%Y"
ren $homefolder -newname ($homefolder + "_lft_" + $date)

1 个答案:

答案 0 :(得分:0)

使用select-object,您可以过滤掉不需要的属性。它仍然会返回一个对象。它有一个名为expand的方便参数,它将返回单个属性值:

$path = Get-ADUser $name -Properties homedirectory | select -Expand HomeDirectory
相关问题