Obter impressoras de rede de um computador remoto

3

Estou usando isso para tentar obter uma lista de impressoras em um computador remoto:

Get-WmiObject win32_printer -ComputerName "$oldPcName" 

O problema é que só recebo impressoras locais, não aquelas impressoras do servidor de impressão conectado ao computador. Como posso obter uma lista das impressoras de rede?

Meu objetivo é obter uma lista de impressoras de rede em um computador remoto, removê-las e adicionar diferentes impressoras de um servidor de impressão diferente.

Obrigado

    
por Wayne In Yak 11.02.2015 / 16:08

3 respostas

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...

Isso tudo é muito mais fácil com as versões mais recentes do Windows, pois elas têm o Get-printers cmdlet ...

Espero que você possa começar ... Eu adoraria ver alguém terminar esse roteiro, já que não tive tempo de trabalho para fazer isso ...

    
por 04.04.2015 / 23:55
0

No Windows 7

Para ver impressoras em rede, eu leio o registro

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
        }
    } 

Para remover uma impressora de rede:

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

Para instalar uma impressora de rede:

rundll32.exe PRINTUI.DLL PrintUIEntry /ga /c\$ComputerName /n\$PrintServer\$PrinterName Gw /q
    
por 01.07.2016 / 22:32
0

Hmm. Pode haver uma maneira de fazer isso com um Raspberry Pi. Você conecta o raspberry pi à impressora e ao wifi, você ativa o encaminhamento de porta para o ssh ou usa o VNC viewer para acessar o Raspberry Pi. Usando o VNC, você pode transferir arquivos para o Raspberry Pi pela rede. Você então pega o Raspberry Pi para imprimir os arquivos que você quer.

Não é a melhor idéia direta, mas é a única maneira que conheço. Raspberry Pi também são muito baratos. O modelo mais recente custa apenas £ 35. Se você quiser fazer isso, precisará criar uma conta VNC e adicionar seu Raspberry Pi ao seu catálogo de endereços VNC. Para fazer isso, você precisa ter o Raspbian Desktop e fazer login na sua conta VNC no Pi framboesa.

Especificações do Raspberry Pi: Ram DDR2 de 1 GB, Processador de braço 1.4GHZ, Pinos GPIO

    
por 10.09.2018 / 21:34