Get-ADUser:无效的类型'System.String []'

时间:2020-05-14 10:42:05

标签: powershell

我试图获取连接到Windows RAS服务器的用户列表(基本上是VPN Connected用户的列表),并获取其AD帐户属性,

以下命令返回的数据如下(它返回100个以上的用户,但为了简洁起见,我只显示了一个)

Get-RemoteAccessConnectionStatistics | fl
ClientIPAddress       : 1.2.3.4
UserName              : {Bob.Jones@company.com}
ConnectionDuration(s) : 696055
ConnectionType        : Vpn

所以我写了以下脚本:

$users = Get-RemoteAccessConnectionStatistics
foreach ($user in $users) {
$UPN = $user.username
Get-ADUser -Filter {UserPrincipalName -eq $UPN }
}

但是运行脚本时出现以下错误:

Get-ADUser : Invalid type 'System.String[]'.
Parameter name: userPrincipalName
At line:7 char:1
+ Get-ADUser -Filter {UserPrincipalName -eq $UPN }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

有人可以帮忙吗?我不确定我做错了什么

1 个答案:

答案 0 :(得分:1)

UserName返回的Get-RemoteAccessConnectionStatistics属性是一个数组(注意{}输出中的值周围的Format-List),仅获取第一个值:

$users = Get-RemoteAccessConnectionStatistics
foreach ($user in $users) {
    $UPN = $user.username |Select -First 1
    Get-ADUser -Filter "UserPrincipalName -eq '$UPN'"
}
相关问题