Как вывести список учетных записей на конкретном компьютере?

Мне нужно написать простой сценарий, в котором перечислены все пользователи, входящие в систему на каждом компьютере в конкретном подразделении.

Я пробовал функцию Get-UserLogon -OU '[distinguished name]'(см. здесь ), но он не возвращает никакого stdout.

Есть альтернативы?

4 ответа

Вы пробовали это, чтобы дать пользователям время и дату последнего входа в систему:

      Get-ADUser -Filter * -SearchBase "ou=users,dc=contoso,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select CN,@{n="lastLogonDate";e={[datetime]::FromFileTime($_.lastLogonTimestamp)}} | Export-CSV -NoType last.csv

ссылка: https://expert-advice.org/active-directory/powershell-script-to-get-lastlogon-timestamp-for-specific-ou-and-export-to-csv-file/

Существует альтернативный метод, который не перебирает все компьютеры в домене, но полагается на то, что все пользователи перенаправляют свои домашние каталоги в общий сетевой ресурс.

Если это так в вашем домене, попробуйте:

      # the UNC \\Server\Share name of the network share where all user homedirectories are
$usersHomePath = '\\HomesServer\HomesShare$' 

# split this UNC path to get the server name and share name in separate variables
$server, $share = $usersHomePath.TrimStart("\") -split '\\'


# get an array of SamAccountNames for all users in the OU
$users = (Get-ADUser -Filter * -SearchBase '[distinguished name]').SamAccountName

$result = Get-CimInstance -ClassName Win32_ServerConnection -ComputerName $server | 
            Where-Object { $_.ShareName -eq $share -and $users -contains $_.UserName } |
            Select-Object @{Name = "SamAccountName"; Expression = { $_.UserName }}, 
                          @{Name = "ComputerName"; Expression = {(([System.Net.Dns]::GetHostEntry($_.ComputerName).HostName) -split "\.")[0]}}

#output in console
$result

# output to Csv
$result | Export-Csv -Path 'UsersOnComputers.csv' -NoTypeInformation

Я пытался просто отладить Get-UserLogon функция.

Эта функция пытается подключиться к каждому компьютеру, указанному в OU, а затем запрашивает у них список входа в систему. Как и ожидалось, большинство этих компьютеров отказывают в подключении (возможно, они выключены или просто отключены).

Есть ли другой способ получить такую ​​информацию? Хранит ли контроллер домена такие централизованные учетные записи?

Я нашел такого рода возможного решения здесь (читать в нижней нити), но я не знаком вообще с VBscript , и я хотел бы реализовать этот код в PowerShell.

Другие вопросы по тегам