Удаленно через командную строку. Не уверен, есть ли ключ 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
подключи для вывода информации о принтере на консоль.
Престижность Райану, поэтому подумал, что внесу свой вклад через ответ.