如何在没有管理员权限的服务器上列出共享打印机
Posted
技术标签:
【中文标题】如何在没有管理员权限的服务器上列出共享打印机【英文标题】:How list shared printers on server without admin rights 【发布时间】:2016-12-16 20:23:58 【问题描述】:我希望在 PowerShell 中列出打印服务器列表中的所有打印机队列(或在必要时包装本机 cmd 命令)。
这里的困难是我没有服务器的管理员权限,所以我不能使用 WMI 来查询它们。
我尝试使用Test-Path \\serverName\queueName
无济于事(对我来说似乎是一个不错的选择,因为例如start \\serverName\queueName
可以很好地打开队列)。
我怎样才能做到这一点?
编辑:我运行的是 Windows 7,但我不知道服务器上运行的是哪个操作系统(可能是 2008 年、2012 年)。
【问题讨论】:
【参考方案1】:如果它们是在 Active Directory 中发布的,您可以查找 printqueue 对象:
Get-ADObject -LDAPFilter "(objectCategory=printQueue)"
编辑:
在不发布 AD 的情况下,您可以使用 net view \\servername
从 SMB 共享中枚举它们以用于指向和打印队列
【讨论】:
【参考方案2】:根据您的操作系统,这实际上可以像使用 Get-Printer
一样简单。
$NetworkQs = $ServerList | ForEachGet-Printer -ComputerName $_
我认为这在 Win8 之前不可用,可能是 8.1。
【讨论】:
我使用的是 Windows 7。我会将此添加到问题中。【参考方案3】:这是我最后使用的。感谢@BenH,没想到net
命令。
$servers = "printer01", "printer02"
$servers |
ForEach-Object
$server = $_
net view \\$server |
Where-Object $_ -match "Print" |
ForEach-Object
$parts = $_ -split "\s2,"
$item = New-Object PSObject
$item | Add-Member -MemberType NoteProperty -Name Server -Value $server
$item | Add-Member -MemberType NoteProperty -Name Queue -Value "\\$server\$($parts[0])"
$item | Add-Member -MemberType NoteProperty -Name Description -Value $parts[2]
$item
输出:
Server Queue Description
------ ----- -----------
... ... ...
... ... ...
【讨论】:
以上是关于如何在没有管理员权限的服务器上列出共享打印机的主要内容,如果未能解决你的问题,请参考以下文章