2013-11-26 197 views
0

好日子安裝打印機,遠程計算機上使用腳本

我已經準備以下腳本連接到網絡具有IP地址的本地打印機安裝。

是否可以修改此腳本並使其在遠程計算機上安裝打印機。我的要求是,如果我在我的筆記本電腦上運行此腳本,那麼它會問我一個遠程計算機名稱,並將遠程計算機名稱後,打印機安裝在那裏。

Write-Host "Develop Ineo 363 Printer Installation Initilizing !!" 

switch ([system.environment]::OSVersion.Version.Major) { 

    5 {$PrnVBSDir = "$env:windir\system32"} 
    6 {$PrnVBSDir = "$env:windir\System32\Printing_Admin_Scripts\en-US\"} 
} 

################################################################################ 
################# Installing the printer driver ################################ 
################################################################################ 
if ([System.IntPtr]::Size -eq 4) 
{ 
    Start-Process "RunDll32" -ArgumentList 'printui.dll PrintUIEntry /ia /m "Generic 42BW-4SeriesPCL" /h "x86" /v "Type 3 - User Mode" /f "\\helpdesk-pc\Drivers\Drivers\Printers\Develop 28BW-4\Driver CD-ROM\Driver\Drivers\PCL\EN\Win_x86\KOAYXJA_.inf"' -Wait 
    Write-Host "x86 Printer Driver deployment finished !!" -ForegroundColor Green 
} 

else 
{ 
    Start-Process "RunDll32" -ArgumentList 'printui.dll PrintUIEntry /ia /m "Generic 42BW-4SeriesPCL" /h "x64" /v "Type 3 - User Mode" /f "\\helpdesk-pc\Drivers\Drivers\Printers\Develop 28BW-4\Driver CD-ROM\Driver\Drivers\PCL\EN\Win_x64\KOAYXJA_.inf"' -Wait 
    Write-Host "x64 Printer Driver deployment finished !!" -ForegroundColor Green 
} 
###################################################################### 
################## Create the printer port ########################### 
###################################################################### 

$Port = ([wmiclass]"win32_tcpipprinterport").createinstance() 

$Port.Name = "Develop-HR" 
$Port.HostAddress = "192.168.24.20" 
$Port.Protocol = "1" 
$Port.PortNumber = "9100" 
$Port.SNMPEnabled = $false 
$Port.Description = "HR Develop Printer" 

$Port.Put() 

###################################################################### 
################# Installing The Printer ############################# 
###################################################################### 

$Printer = ([wmiclass]"win32_Printer").createinstance() 

$Printer.Name = "Develop-HR" 
$Printer.DriverName = "Generic 42BW-4SeriesPCL" 
$Printer.DeviceID = "Develop-HR" 
$Printer.Shared = $false 
$Printer.PortName = "Develop-HR" 
$Printer.Location = "HR Department" 
$Printer.Comment = "Printer + Photocopier + Scanner" 

$Printer.Put() 

###################################################################### 
############################# END #################################### 
###################################################################### 

問候 阿卜杜勒Wajid

回答

0

可以這種方式通過多種方式,我認爲最簡單的方法是安裝PSEXEC和存儲您的腳本在名爲$代碼塊,然後腳本寫目標機和帶PSEXEC

Write-Warning "Run this script using a account that has admin access to the target machine." 
$PCName = Read-Host "Computer Name" 

$Code = { 

switch ([system.environment]::OSVersion.Version.Major) { 
5 {$PrnVBSDir = "$env:windir\system32"} 
6 {$PrnVBSDir = "$env:windir\System32\Printing_Admin_Scripts\en-US\"} 
} 

if ([System.IntPtr]::Size -eq 4) 
{ 
Start-Process "RunDll32" -ArgumentList 'printui.dll PrintUIEntry /ia /m "Generic 42BW-4SeriesPCL" /h "x86" /v "Type 3 - User Mode" /f "\\helpdesk-pc\Drivers\Drivers\Printers\Develop 28BW-4\Driver CD-ROM\Driver\Drivers\PCL\EN\Win_x86\KOAYXJA_.inf"' -Wait 
Write-Host "x86 Printer Driver deployment finished !!" -ForegroundColor Green 
} 

else 
{ 
Start-Process "RunDll32" -ArgumentList 'printui.dll PrintUIEntry /ia /m "Generic 42BW-4SeriesPCL" /h "x64" /v "Type 3 - User Mode" /f "\\helpdesk-pc\Drivers\Drivers\Printers\Develop 28BW-4\Driver CD-ROM\Driver\Drivers\PCL\EN\Win_x64\KOAYXJA_.inf"' -Wait 
Write-Host "x64 Printer Driver deployment finished !!" -ForegroundColor Green 
} 

$Port = ([wmiclass]"win32_tcpipprinterport").createinstance() 

$Port.Name = "Develop-HR" 
$Port.HostAddress = "192.168.24.20" 
$Port.Protocol = "1" 
$Port.PortNumber = "9100" 
$Port.SNMPEnabled = $false 
$Port.Description = "HR Develop Printer" 

$Port.Put() 

$Printer = ([wmiclass]"win32_Printer").createinstance() 

$Printer.Name = "Develop-HR" 
$Printer.DriverName = "Generic 42BW-4SeriesPCL" 
$Printer.DeviceID = "Develop-HR" 
$Printer.Shared = $false 
$Printer.PortName = "Develop-HR" 
$Printer.Location = "HR Department" 
$Printer.Comment = "Printer + Photocopier + Scanner" 

$Printer.Put() } 

$Code | Out-File \\$PCName\C$\Logs\install-printer.ps1 -Width 230 -Force #Pipe the code block into a ps1 file on the target computer 
Start-Process "C:\Psexec.exe" -ArgumentList "\\$PCName -s Powershell.exe -ExecutionPolicy Bypass -File C:\Logs\install-printer.ps1 -Verb runas" -Wait #Start PSExec and run the ps1 file 
#ToDO:Clean up the target machine, remove the file afterwards. 

PSEXEC

運行
相關問題