2016-12-16 49 views
0

我希望列出PowerShell中的打印服務器列表上的所有打印機隊列(或必要時包裝的本地cmd命令)。如何在沒有管理員權限的情況下在服務器上列出共享打印機

這裏的困難是我沒有服務器上的管理權限,所以我無法使用WMI來查詢它們。

我試圖使用Test-Path \\serverName\queueName無濟於事(似乎是一個很好的選擇,因爲例如start \\serverName\queueName打開隊列就好了)。

我該如何做到這一點?

編輯:我正在運行Windows 7,我不知道哪個操作系統在服務器上運行(2008年,2012年也許)。

回答

1

如果它們被Active Directory中發佈,你可以查找的打印隊列對象:

Get-ADObject -LDAPFilter "(objectCategory=printQueue)" 

編輯:

而不AD發佈,那麼你可以從SMB共享一一列舉了點和打印隊列使用net view \\servername

+0

不幸的是,他們不是。我希望... – sodawillow

+0

該死的,錯過了編輯。我認爲你找到了一個方法:)。 – sodawillow

0

根據您的操作系統,這可能就像使用Get-Printer一樣簡單。

$NetworkQs = $ServerList | ForEach{Get-Printer -ComputerName $_ } 

我不認爲這是在Win8之前,也許是8.1。

+0

我使用Windows 7。我將在增加的問題。 – sodawillow

0

這就是我最終使用的。榮譽@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    
------  -----     -----------    
...   ...     ... 
...   ...     ... 
相關問題