답변:
#--------------------------
#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-printers
cmdlet 이 있기 때문에 최신 버전의 Windows에서는 훨씬 쉽습니다 .
잘하면 그게 당신을 시작할 수 있습니다 ... 나는 그렇게 할 시간이 없었기 때문에 누군가 가이 대본을 끝내기를보고 싶습니다 ...
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
PrintUIEntry
.
흠. 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 핀