Powershell Startup脚本,用于通过GPO进行打印机部署

时间:2013-03-15 15:59:50

标签: powershell gpo startupscript

我正在尝试通过PowerShell脚本将打印机部署到组织中的PC。脚本本身通过组策略部署,以在计算机启动时运行。当测试OU中的计算机启动时,它将坐在请等待无限期,脚本永远不会完成。如果您手动执行该脚本,则该脚本有效。我不会详细介绍它,但不能直接通过组策略部署打印机。

Powershell脚本

# Print File Server Path
$printsrv = "\\Servername\Deploy\"

# Check FTP Server Status
$file = ($env:computername + '.csv')
$num = 0
IF ((Test-Path ($printsrv + $file)) -eq $false) {
Do {
Start-Sleep -Seconds 5
$num = $num + 1
} Until ((Test-Path ($printsrv + $file)) -eq $true -or $num -eq 3)
} 
if ((Test-Path ($printsrv + $file)) -eq $false) {exit}

# Create Printers
$print = Import-Csv  ($printsrv + $file)
$num = 0
do {
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection($print.p_address[$num])
$num = $num + 1
} Until ($num -eq $print.Count)

#Set Default
$num = 0
Do {
$contains = $Print.Def_Bit[$num].Contains(1)
$Default = $print.P_Address[$num]
$num++
} until ($contains -eq $true -or $num -eq $print.Count) 
(New-Object -ComObject WScript.Network).SetDefaultPrinter($Default)
Remove-Item -Path ($printsrv + $file)

Csv文件

#TYPE System.Data.DataRow
"P_Address","DEF_Bit"
"\\server\printer",""
"\\server\printer","True"

2 个答案:

答案 0 :(得分:0)

我想出了问题(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection是用rundll32 printui.dll,PrintUIEntry / ga / n \ printername替换它的问题,现在正在使用

答案 1 :(得分:0)

您也可以这样添加打印机(静态wmi方法):

<img class="lazy" data-src="../img/example.jpg" />

我不推荐“add-printer -connectionname”。