Итак, я хочу указать имя пользователя и вернуть имя компьютера. Когда я запускаю это, он говорит мне, что мой $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.