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

Есть ли способ узнать, какие принтеры подключил пользователь удаленно?

Удаленно через командную строку. Не уверен, есть ли ключ reg или что-то подобное, я могу посмотреть, есть ли у пользователя правильные сопоставленные принтеры.

Что ж, вы можете взглянуть на WMI-класс Win32_Printer,

Get-WMIObject Win32_Printer -ComputerName $Comp

Но я думаю, это принесет вам еще лучшие результаты:

New-PSSession $Comp | Enter-PSSession
Get-ChildItem Registry::\HKEY_Users\$UserSID\Printers\Connections
Exit

Без использования PS Remoting вы можете сделать это:

$Printers = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(Microsoft.Win32.RegistryHive]::Users, $ServerName)

Вы уловили идею. По сути, вам нужно получить доступ к разделу реестра этого пользователя любым методом и перечислить все, что вы найдете в Printers\Connections.

Для всех, кто интересуется, как выглядит рабочий код для перечисления учетных записей и получения списка установленных принтеров, см. Ниже:

Get-ChildItem Registry::\HKEY_Users | 
Where-Object { $_.PSChildName -NotMatch ".DEFAULT|S-1-5-18|S-1-5-19|S-1-5-20|_Classes" } | 
Select-Object -ExpandProperty PSChildName | 
ForEach-Object { Get-ChildItem Registry::\HKEY_Users\$_\Printers\Connections -Recurse | Select-Object -ExpandProperty Name }

Этот фрагмент сначала перечисляет все подключи в разделе HKEY_Users, затем он отфильтровывает ключи учетной записи по умолчанию / системной учетной записи и ключи классов для каждого пользователя, наконец, он перечисляет все оставшиеся ключи \Printers\Connections подключи для вывода информации о принтере на консоль.

Престижность Райану, поэтому подумал, что внесу свой вклад через ответ.