원격 컴퓨터에서 네트워크 프린터 가져 오기


4

이것을 사용하여 원격 컴퓨터에서 프린터 목록을 얻으려고합니다.

Get-WmiObject win32_printer -ComputerName "$oldPcName" 

문제는 인쇄 서버의 프린터가 컴퓨터에 연결된 프린터가 아닌 로컬 프린터 만 얻는 것입니다. 네트워크 프린터 목록을 얻으려면 어떻게해야합니까?

저의 목표는 원격 컴퓨터에서 네트워크 프린터 목록을 가져 와서 제거하고 다른 인쇄 서버에서 다른 프린터를 추가하는 것입니다.

감사

답변:


0
#--------------------------
#Set Execution Of PSScripts
#--------------------------

Set-ExecutionPolicy Unrestricted -force

#------------
#Turn Off UAC
#------------

New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -PropertyType DWord -Value 0 -Force

#------------------------------
#Enter The Name Of The Computer
#------------------------------

$comp = "Name of computer"

#or if you wish to be prompted for the computer name

$comp = Read-host 'Enter the name of the computer?'

#---------------------------------------
#Starts WinRM Service On Remote Computer
#---------------------------------------

Import-Module Remote_PSRemoting -force
Set-WinRMListener -computername $comp
Restart-WinRM -computername $comp
Set-WinRMStartUp -computername $comp

Start-Sleep -Seconds 60

#----------------------------------------------
#Establish a PSSession With The Remote Computer
#----------------------------------------------

New-PSSession $comp | Enter-PSSession

#All of the replace commands are used to strip the extra characters and just #give a \\server\printer path return
#-----------------------
#Gets A List Of Printers
#-----------------------

$printers1 = Get-childitem -Path HKCU:\printers\connections | select name
$printers2 = $printers1 -replace '.*,,'
$printers3 = $printers2 -replace ',','\'
$printers = $printers3 -replace '}', ''

------------------------------------------------------
#To Replace The Old Print Server Name With The New One
------------------------------------------------------

$newprinters = $printers -replace 'oldserver','\\newserver'

#--------------------
#Gets Default Printer
#--------------------

$default = Get-itemproperty -Path "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows" | select device
$default1 = $default -replace '.*='
$default2 = $default1 -replace '()'
$default3 = $default2 -replace ',winspool'
$defaultprinter = $default3 -replace ',.*'

------------------------------------------------------
#To Replace The Old Print Server Name With The New One
------------------------------------------------------

$newdefaultprinter = $defaultprinter -replace 'oldserver','\\newserver'

#------------------------
#Deletes The Old Printers
#------------------------

Get-WMIObject Win32_Printer | where{$_.Network -eq 'true'} | foreach{$_.delete()}

#----------------------------------------
#Exits PSSession With The Remote Computer
#----------------------------------------

Exit-PSSession

#-----------
#Turn UAC On
#-----------

#Value = 0 through 4 depending on the level of UAC

New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name ConsentPromptBehaviorAdmin -PropertyType DWord -Value 2 -Force

#------------------------------------
#Turn Off Execution Policy Of Scripts
#------------------------------------

Set-ExecutionPolicy undefined -Force

#####This is as far as I could get with it. I always turn off UAC and Enable Scripts in the beginning and turn them back on ant the end.  The summary of this script will give you the new network Printer paths and the users default printers.  It also deletes the users old network printers. With powershell versions before windows 8 and server 2012, you would have to create a logon script to add the new printers and mark the default printer using WMI commands.  Use could also use a csv file with a list of computer names as an input if you wish to run this command on multiple computers.  It would look something like...


$csv = Import-csv -Path pathofcsvfile
foreach ($line in $csv) {

#With a bracket at the end to run through each computer in the list...

Get-printerscmdlet 이 있기 때문에 최신 버전의 Windows에서는 훨씬 쉽습니다 .

잘하면 그게 당신을 시작할 수 있습니다 ... 나는 그렇게 할 시간이 없었기 때문에 누군가 가이 대본을 끝내기를보고 싶습니다 ...


언급 한 것을 잊었습니다. gallery.technet.microsoft.com/scriptcenter/ 에서 psremoting 모듈을 다운로드하고 실행중인 컴퓨터의 c : \ windwows \ system32 \ windowsPowerShell \ v1.0 \ Modules 폴더에 저장해야합니다. 스크립트
ninjamonkeysensai

언급 된 폴더에 모듈을 추가하면 다음 오류가 발생합니다. 모듈 디렉토리에 유효한 모듈 파일이 없으므로 지정된 모듈 'Remote_PSRemoting'이로드되지 않았습니다.
웨인 인 야크

1
"Set-ExecutionPolicy Unrestricted"이것은 매우 잘못된 PowerShell 관행입니다. 대신 "RemoteSigned"를 사용해야합니다
InterLinked

0

Windows 7에서

네트워크 프린터를 보려면 레지스트리를 읽습니다.

Function InstalledPrinters ($ComputerName)
    {
    Invoke-Command -ComputerName $ComputerName -ScriptBlock {
        $InstalledPrinters = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"
        $InstalledPrinters | Add-Member -Name 'PrinterName' -MemberType NoteProperty -Value ""
        Foreach ($InstalledPrinter in $InstalledPrinters) {$InstalledPrinter.PrinterName = $InstalledPrinter.GetValue("Printer").split("\")[3]}
        Return $InstalledPrinters | sort PrinterName | select PSComputerName, PrinterName
        }
    } 

네트워크 프린터를 제거하려면

rundll32.exe PRINTUI.DLL PrintUIEntry /gd /c\\$ComputerName /n\\$PrintServer\$PrinterName Gw /q

네트워크 프린터를 설치하려면

rundll32.exe PRINTUI.DLL PrintUIEntry /ga /c\\$ComputerName /n\\$PrintServer\$PrinterName Gw /q

TechNet의 참조 에 대한 PrintUIEntry.
벤 N

0

흠. Raspberry Pi로이를 수행하는 방법이있을 수 있습니다. raspberry pi를 프린터와 wifi에 연결하고 ssh의 포트 전달을 활성화하거나 VNC 뷰어를 사용하여 Raspberry Pi에 액세스합니다. VNC를 사용하면 네트워크를 통해 파일을 Raspberry Pi로 전송할 수 있습니다. 그런 다음 Raspberry Pi가 원하는 파일을 인쇄하도록합니다.

가장 간단한 아이디어는 아니지만 그것이 내가 아는 유일한 방법입니다. 라즈베리 파이도 매우 저렴합니다. 최신 모델은 35 파운드에 불과합니다. 이렇게하려면 VNC 계정을 만든 다음 VNC 주소록에 Raspberry Pi를 추가해야합니다. 이렇게하려면 Raspbian Desktop이 있어야하고 raspberry Pi에서 VNC 계정에 로그인해야합니다.

라즈베리 파이 사양 : 1GB DDR2 Ram, 1.4GHZ 암 프로세서, GPIO 핀


이 게시물의 나이가 3 세인 것을 보지 못했습니다. 충돌 한 경우 죄송합니다.
The Royal Noob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.