如何在没有管理员权限的情况下列出服务器上的共享打印机
How list shared printers on server without admin rights
我希望在 PowerShell 中的打印服务器列表中列出所有打印机队列(如有必要,也可以包装本机 cmd 命令)。
这里的困难是我没有服务器的管理员权限,所以我不能使用 WMI 来查询它们。
我尝试使用 Test-Path \serverName\queueName
无济于事(对我来说似乎是一个不错的选择,因为例如 start \serverName\queueName
可以很好地打开队列)。
我怎样才能做到这一点?
编辑:我是 运行 Windows 7,我不知道哪个 OS 在服务器上运行(可能是 2008 年、2012 年)。
根据您的 OS 这真的可以像使用 Get-Printer
.
一样简单
$NetworkQs = $ServerList | ForEach{Get-Printer -ComputerName $_ }
我认为这在 Win8 之前不可用,也许是 8.1。
如果它们在 Active Directory 中发布,您可以查找打印队列对象:
Get-ADObject -LDAPFilter "(objectCategory=printQueue)"
编辑:
如果不发布 AD,那么您可以使用 net view \servername
从指向和打印队列的 SMB 共享中枚举它们
这就是我最终使用的。感谢@BenH,没有想到 net
命令。
$servers = "printer01", "printer02"
$servers |
ForEach-Object {
$server = $_
net view \$server |
Where-Object { $_ -match "Print" } |
ForEach-Object {
$parts = $_ -split "\s{2,}"
$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
------ ----- -----------
... ... ...
... ... ...
我希望在 PowerShell 中的打印服务器列表中列出所有打印机队列(如有必要,也可以包装本机 cmd 命令)。
这里的困难是我没有服务器的管理员权限,所以我不能使用 WMI 来查询它们。
我尝试使用 Test-Path \serverName\queueName
无济于事(对我来说似乎是一个不错的选择,因为例如 start \serverName\queueName
可以很好地打开队列)。
我怎样才能做到这一点?
编辑:我是 运行 Windows 7,我不知道哪个 OS 在服务器上运行(可能是 2008 年、2012 年)。
根据您的 OS 这真的可以像使用 Get-Printer
.
$NetworkQs = $ServerList | ForEach{Get-Printer -ComputerName $_ }
我认为这在 Win8 之前不可用,也许是 8.1。
如果它们在 Active Directory 中发布,您可以查找打印队列对象:
Get-ADObject -LDAPFilter "(objectCategory=printQueue)"
编辑:
如果不发布 AD,那么您可以使用 net view \servername
这就是我最终使用的。感谢@BenH,没有想到 net
命令。
$servers = "printer01", "printer02"
$servers |
ForEach-Object {
$server = $_
net view \$server |
Where-Object { $_ -match "Print" } |
ForEach-Object {
$parts = $_ -split "\s{2,}"
$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
------ ----- -----------
... ... ...
... ... ...