2013-12-17 3 views
2

윈도우 7 :가져 오기 기본 프린터를 원격으로

cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -g 

윈도우 XP :

cscript C:\windows\system32\prnmngr.vbs -g 

이 현재 시스템의 기본 프린터를 얻을 것이다. 내 컴퓨터에서이 컴퓨터를 실행하여 컴퓨터 이름으로 원격 컴퓨터의 기본 프린터를 가져 오는 방법이 있는지 궁금합니다.

나는 실행 시도 :

psexec \\c78572 -i -d cscript C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs -g 

을 그리고 실행이 나타납니다 ..하지만 난 단지 원격 컴퓨터에서 빠른 팝업 cmd를 줄 창에서 결과를보고하지 광산에. 내 말에 표시되는 모든은 다음과 같습니다

작동 gwmi win32_printer -computername c78572 PowerShell에서
cscript started with process ID 568. 

..하지만 난 나에게 기본 프린터를 보여주기를 정렬하는 방법을 모르겠어요.

편집 12/20/13 나는 쇼 모든 프린터와 기본을 결합하려고하지만 난 일하러 수 없습니다

while (1) { 
$tag1 = Read-Host 'Enter tag # or Q to quit' 
if ($tag1 -eq "Q") { 
    break; 
} 

cls 

sc.exe \\$tag1 start RemoteRegistry; 

cls 

start-sleep -seconds 2 

cls 

$OSInfo = get-wmiobject -class win32_operatingsystem -computername $tag1; 
$OSInfo | Format-Table -Property @{Name="OS Name";Expression={$_.Caption}},@{Name="System Boot Time";Expression={$_.ConvertToDateTime($_.LastBootUpTime)}} -AutoSize; 


gwmi win32_printer -computername $tag1 | ft -Property @{Name="Printer Name";Expression={$_.Name}} -AutoSize; 

$Computer = $tag1 
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('currentuser', $Computer) 
$RegKey= $Reg.OpenSubKey('Software\Microsoft\Windows NT\CurrentVersion\Windows') 
$DefaultPrinter = $RegKey.GetValue("Device") 
$DefaultPrinter | ConvertFrom-Csv -Header Name, Provider, Order| Select Name 

# Alt method: Get-WmiObject win32_printer -computername c60311 

}

답변

8

당신은 wmi32_printer 사용할 수 있습니다 기본값을 얻으려면. 다음은 코드입니다.

$AllPrinters = gwmi win32_printer -computername c78572 
$DefaultPrinter = $AllPrinters | where {$_.Default -eq $true} 

로컬로 연결된 모든 프린터가 반환됩니다. 네트워크 연결 프린터 목록을 얻으려면 (아래 Aaron 주석), 약간의 문제가 있습니다. 위의 스크립트는 WMI가 사용자 수준이 아닌 로컬 컴퓨터에서 작동하기 때문에 작동하지 않습니다. 많은 연구 끝에이 정보를 얻는 한 가지 방법은 WMI를 사용하여 원격으로 로그인 한 사용자의 정보를 얻는 방법이 본질적으로 없기 때문에 실행되는 스크립트를 로그온하는 것입니다.

WMI를 사용할 수 없다면 실제로 어떻게해야합니까? 뒷문을 사용하십시오. 모든 관련 정보는 레지스트리에 저장됩니다. 출력은 꽤 좋지 않을 수도 있지만 필요한 모든 정보를 제공합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers 

이 모든 로컬로 설치된 프린터를 포함 : 우리는 우려 3에 대한 주요 위치입니다. 이것을 잊어 버리면 gwmi win32_printer 명령을 사용하여이 목록을 가져 오십시오.

HKEY_CURRENT_USER\Printers\Settings 

모든 현재 로그인 한 사용자 설치 프린터가 포함되어 있습니다. 기본 프린터 정보가 없습니다. 현재 사용자 설치 기본 프린터에 로그인을 구할 수있는 곳은

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device 

이입니다. 즉 이것은 Aaron이 특별히 찾고있는 것입니다.모두의 목록을 얻으려면 -

$Computer = "c78572" 
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('currentuser', $Computer) 
$RegKey= $Reg.OpenSubKey('Software\Microsoft\Windows NT\CurrentVersion\Windows') 
$DefaultPrinter = $RegKey.GetValue("Device") 
$DefaultPrinter | ConvertFrom-Csv -Header Name, Provider, Order| Select Name 

---- 편집 :

그래서, 우리는 원격 레지스트리에 연결하는 PowerShell을 사용하고 읽을 수있는 현재 다음과 같은 스크립트를 사용하여 사용자의 기본 프린터에 로그인 프린터는 ----

는 원격 시스템에있는 모든 프린터를 나열하려면 다음

$Computer = "c78572" 

#Get Local Printers: 
$Printers = @(Get-WmiObject win32_printer -computername $Computer | Select Name) 

#Get List of Network Printers: 
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('currentuser', $Computer) 
$RegKey= $Reg.OpenSubKey('Printers\Settings') 
$Printers += @($RegKey.GetValueNames()) 

#Output List of Printers 
Write-Output $Printers | ft -Property @{Name="Printer Name";Expression={$_.Name}} -AutoSize 


#Get Default Printer 
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('currentuser', $Computer) 
$RegKey= $Reg.OpenSubKey('Software\Microsoft\Windows NT\CurrentVersion\Windows') 
$DefaultPrinter = $RegKey.GetValue("Device") 

#Output the Default Printer 
Write-Output $DefaultPrinter | ConvertFrom-Csv -Header Name, Provider, Order| Select Name | ft -Property @{Name="Default Printer Name";Expression={$_.Name}} -AutoSize 
+0

오른쪽 명령처럼 보이지만 유일한 문제는 기본 어로 나열하지 않도록 그들이 네트워크 프린터가 있다는 것입니다 실제로 그들은 당신이 가서보고있을 때 하나에 맞추어 져 있습니다. – Aaron

+0

WMI가 사용자의 네트워크 프린터를 사용할 수 없으므로 사용하는 것이 옳습니다. 위의 편집 내용을 참조하십시오. 현재 로그인 한 사용자의 네트워크 프린터를 사용할 수있는 방법을 추가했습니다. 상자에 기록되지 않은 다른 모든 사용자의 정보도 쉽게 수정할 수 있습니다. – HAL9256

+0

프린터 목록과 기본 프린터 목록을 결합하려고 시도하지만 작동하지 않습니다. 나는 나의 코드로 나의 OP를 편집했다. – Aaron

관련 문제