Назад | Перейти на главную страницу

Написание скрипта для определения того, на каком компьютере находится пользователь

Итак, я хочу указать имя пользователя и вернуть имя компьютера. Когда я запускаю это, он говорит мне, что мой $computers obj это null. Почему бы $computers = Get-ADComputer | where {$_.accountdisabled -eq $false} возвращение null?

Мой сценарий пока выглядит так:

Function Get-Username{
$Global:Username = read-Host "Enter a username"
if ($Username -eq $null){
    Write-Host "Username can't be blank. Enter username"
    Get-Username
}
$UserCheck = Get-ADUser -Filter 'Name -like $Username' | FT Name, SamAccountName -A
if($UserCheck -eq $null){
    Write-Host "Invalid username, enter username"
    Get-Username
}
}

Get-username

$computers = Get-ADComputer | where {$_.accountdisabled -eq $false}
foreach($comp in $computers){
    $Computer = $comp.Name
    $ping = New-Object System.Net.NetworkInformation.Ping
    $Reply = $null
    $Reply = $ping.send($Computer)
    if($Reply.status -like 'Success'){
        $proc = gwmi win32_process -computer $Computer -Filter "Name = 'explorer.exe'"
        ForEach($p in $proc){
            $temp = ($p.GetOwner()).User
            if($temp -eq $Username){
                Write-Host "$Username is logged on $Computer"
}}}}

Первое, что я вижу, это когда я запускаю Get-ADComputer, ему нужен фильтр.

После применения фильтра я все еще не вижу свойство accountdisabled для Get-AdComputer, я думаю, вы имеете в виду "Включено"

$computers = Get-ADComputer -Filter * | where {$_.Enabled -eq $false}

Возможно, вы захотите изменить этот фильтр перед запуском.

Изменить: извините; чтобы найти свойства запустить Get-ADComputer | Get-Member Это покажет вам список всех свойств. Это мой командлет №1.