通过命令行远程操作。不确定是否有注册表项或类似的东西可以让我查看用户是否映射了正确的打印机。
答案1
好吧,你可以看看 Win32_Printer WMI 类,
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
。
答案2
对于那些对枚举帐户和获取已安装打印机列表的工作代码感兴趣的人,请参见下文:
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 下的所有子键,然后过滤出默认/系统帐户键和每个用户的 Classes 键,最后枚举每个剩余键的\Printers\Connections
子键以将打印机信息输出到控制台。
向 Ryan 表示敬意,所以想通过回答做出贡献。