2013-11-26 250 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

运行
相关问题