Escrevendo um script para encontrar em qual computador o usuário está logado

1

Por isso, quero especificar um nome de usuário e retornar o nome do computador. Quando eu executo isso, ele me diz que meu $computers obj é null . Por que %código% devolve $computers = Get-ADComputer | where {$_.accountdisabled -eq $false} ?

Meu script até agora é assim:

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"
}}}}
    
por julieBlue 23.06.2016 / 22:53

1 resposta

0

A primeira coisa que vejo é quando eu executo 'Get-ADComputer' ele quer um filtro.

Depois que o filtro é aplicado, ainda não vejo a propriedade "accountdisabled" para Get-AdComputer, acho que você quer dizer "Ativado"

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

Você pode querer alterar esse filtro antes de executá-lo.

Edit: desculpe; para localizar as propriedades, execute Get-ADComputer | Get-Member . Isso mostrará uma lista de todas as propriedades. Esse é o meu cmdlet # 1 usado.

    
por 23.06.2016 / 23:02