通过用户名搜索最终用户的 ipaddress

search end users ipaddress by their username

您好,我正在尝试进行 PowerShell 搜索,我可以输入最终用户 SAMaccountName 并推出他们登录的计算机 IPv4 地址。

当尝试 运行 脚本时,它要求 Class: 并且不会给我用户的 IPv4 地址。

$selectUser = Read-Host 'What is the endusers username?'
$compname = Get-ADComputer -Filter * -Properties ipv4Address | select Name
ForEach($device in $compname) {
    $usr = Get-WmiObject –ComputerName $device | Select-Object UserName
    if($usr -eq $selectUser){
        $compip = Get-ADComputer -Filter * -Properties ipv4Address | select ipv4Address
    }
}

命令管道位置 1 处的 cmdlet Get-WmiObject 为以下参数提供值: Class: PS C:\Windows\system32>

正如提示所示,您需要为 Get-WmiObject; it's required. Based on your use of the UserName property, it looks like you want the Win32_ComputerSystem class-Class 参数提供一个值...

$usr = Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem | Select-Object UserName

此外,因为您正在使用 Select-Object 的(位置)-Property 参数来检索 UserName 属性,$usr 将不包含直接 UserName 属性 而是一个带有单个 UserName 属性 的对象。您在以下 if 语句 $usr -eq $selectUser 中的条件将不会像您预期的那样运行。

要解决此问题,请与 $usr.UserName 属性 进行比较...

if($usr.UserName -eq $selectUser){

或者,要让 $usr 直接存储 UserName 文本,您可以使用 Select-Object...

-ExpandProperty 参数
$usr = Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem | Select-Object -ExpandProperty UserName
if($usr -eq $selectUser){

...或使用成员语法检索 UserName 属性...

$usr = (Get-WmiObject –ComputerName $device -Class Win32_ComputerSystem).UserName
if($usr -eq $selectUser){