获取active directory信息时如何在powershell中处理连字符名称

获取active directory信息时如何在powershell中处理连字符名称,powershell,active-directory,Powershell,Active Directory,我正在尝试使用powershell为具有连字符名称(即firstname.last name)的用户获取active directory中的密码过期日期,并在连字符名称上给出无效的cmdlet错误。如何查询连字符的名称 我现在的命令是 net user $username /DOMAIN | find "Password expires" 可能使用ActiveDirectory模块而不是net命令: $MaxPwdAge = (Get-ADDefaultDomainPass

我正在尝试使用powershell为具有连字符名称(即firstname.last name)的用户获取active directory中的密码过期日期,并在连字符名称上给出无效的cmdlet错误。如何查询连字符的名称

我现在的命令是

net user $username /DOMAIN | find "Password expires"

可能使用ActiveDirectory模块而不是net命令:

$MaxPwdAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days

Get-ADUser -Filter { Name -like "*-*" } -Properties 'PasswordLastSet', 'DisplayName' |
Select-Object Name,DisplayName,
    @{ Name = 'PasswordExpires'; Expression = { $_.PasswordLastSet.AddDays( $MaxPwdAge ) } }
如果需要,您可以将过滤器更改为查看DisplayName,而不是
-filter{DisplayName-like“*-*”}

根据要在输出中包含的内容,可能需要调整正在检索的属性。这只是一个示例,但它可以工作,并可用于绘制前进路径。看起来你得计算一下有效期。但我可以继续努力,看看有没有更好的办法

如果要查询特定用户,请执行以下操作:

Get-ADUser Name-Name -Properties 'PasswordLastSet',DisplayName |
Select-Object Name,DisplayName,
    @{ Name = 'PasswordExpires'; Expression = { $_.PasswordLastSet.AddDays( $MaxPwdAge ) } }
这假定连字符的名称是samAccountName。如果您需要按DisplayName搜索,即使您只查找一个用户,也必须返回filter

Get-ADUser -Filter { DisplayName -eq "Name-Name" } -Properties 'PasswordLastSet',DisplayName |
    Select-Object Name,DisplayName,
        @{ Name = 'PasswordExpires'; Expression = { $_.PasswordLastSet.AddDays( $MaxPwdAge ) } }

注意:您必须更改“名称”。同样在上一个示例中,我改为使用
-eq
操作符,而不是像
-like
那样使用
。显然,这是假设你确切地知道你在寻找什么。虽然您可以将
-Like
与DisplayName一起使用,或者如果愿意,甚至可以使用姓氏属性。

关闭,但在输入带有连字符的姓氏的用户名时仍然会出错。我将用户名的csv作为输入,当它遇到带有连字符的姓氏的用户名时,它会出错。我的示例是返回name属性中带有连字符的所有用户。如果您正在寻找特定用户,我将添加一个示例。您可以发布该命令的副本以及由此产生的错误吗?``Get ADUser-Filter{Name-like$USERNAME}-Properties'PasswordLastSet','DisplayName';选择对象名,DisplayName,@{Name='PasswordExpires';表达式={$\密码LastSet.AddDays($MaxPwdAge)}net user$usernameS/DOMAIN;\查找“密码过期”}``Get ADUser:在“编辑”下找不到标识为“firstname.last-name”的对象。在C:\Users\user\Desktop\passwordexpire.ps1:16字符:1+获取用户的名字。姓氏-属性'PasswordLastSet','D…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~CategoryInfo:ObjectNotFound:(firstname.last name:ADUser)[Get ADUser],ADIdentityNotFoundException+FullyQualifiedErrorId:ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADUser``如果您使用的是
-Like
操作符,则必须使用“*”’s。如果您要查询多个用户,则必须使用与之匹配的内容。您不能按照复数形式
$UserNameS
给出一个集合。请注意这一点。您是否考虑过只使用不明确的名称解析?
Get ADUser-LDAPFilter“(anr=$username)”