init
This commit is contained in:
4
PrinterDriverInstall.cmd
Normal file
4
PrinterDriverInstall.cmd
Normal file
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
REM Ensure PowerShell execution regardless of local policy
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "\\domain_name\SYSVOL\domain_name\scripts\Printers\XeroxDriverInstall.ps1"
|
||||
exit /b %ERRORLEVEL%
|
||||
71
PrinterDriverInstall.ps1
Normal file
71
PrinterDriverInstall.ps1
Normal file
@@ -0,0 +1,71 @@
|
||||
$DriverInfPath = "\\domain_name\SYSVOL\domain_name\Drivers\Printer_Driver\driver_info.inf"
|
||||
$DriverName = "Global Print Driver PCL6"
|
||||
# must match Get-PrinterDriver name
|
||||
|
||||
$CentralLogDir = "\\domain_name\SYSVOL\domain_name\scripts\Printers\Logs"
|
||||
$LocalLogDir = "C:\ProgramData\PrinterDeploy\Logs"
|
||||
$LogFile = Join-Path $LocalLogDir "Deploy-PrinterDriver_$(Get-Date -Format 'yyyyMMdd').log"
|
||||
|
||||
|
||||
New-Item -ItemType Directory -Path $LocalLogDir -Force | Out-Null
|
||||
|
||||
function Write-Log {
|
||||
param([string]$Message, [string]$Level = "INFO")
|
||||
$line = "[{0}] [{1}] {2}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Level, $Message
|
||||
$line | Tee-Object -FilePath $LogFile -Append
|
||||
try {
|
||||
Write-EventLog -LogName Application -Source "PrinterDeployGPO" -EventId 1000 -EntryType Information -Message $line -ErrorAction SilentlyContinue
|
||||
} catch {}
|
||||
}
|
||||
|
||||
try {
|
||||
if (-not [System.Diagnostics.EventLog]::SourceExists("PrinterDeployGPO")) {
|
||||
New-EventLog -LogName Application -Source "PrinterDeployGPO"
|
||||
}
|
||||
} catch {}
|
||||
|
||||
Write-Log "Starting Deploy-PrinterDriver script."
|
||||
|
||||
if (-not (Test-Path $DriverInfPath)) {
|
||||
Write-Log "Driver INF not found: $DriverInfPath" "ERROR"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$existingDriver = Get-PrinterDriver -ErrorAction SilentlyContinue | Where-Object { $_.Name -eq $DriverName }
|
||||
if ($existingDriver) {
|
||||
Write-Log "Driver '$DriverName' already installed. Skipping driver install."
|
||||
} else {
|
||||
Write-Log "Driver '$DriverName' not installed. Attempting installation via pnputil..."
|
||||
$pnputilAddArgs = "/add-driver `"$DriverInfPath`" /install"
|
||||
$process = Start-Process -FilePath "pnputil.exe" -ArgumentList $pnputilAddArgs -Wait -PassThru -WindowStyle Hidden
|
||||
if ($process.ExitCode -eq 0) {
|
||||
Write-Log "pnputil installed driver from INF successfully."
|
||||
} else {
|
||||
Write-Log "pnputil failed with ExitCode=$($process.ExitCode). Attempting fallback via Add-PrinterDriver..." "WARN"
|
||||
try {
|
||||
Add-PrinterDriver -Name $DriverName -InfPath $DriverInfPath -ErrorAction Stop
|
||||
Write-Log "Add-PrinterDriver installed driver successfully."
|
||||
} catch {
|
||||
Write-Log "Add-PrinterDriver failed: $($_.Exception.Message)" "ERROR"
|
||||
exit 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $InstallPrinter) {
|
||||
Write-Log "Configured to install driver only. Exiting."
|
||||
goto :CopyLog
|
||||
}
|
||||
|
||||
:CopyLog
|
||||
try {
|
||||
if (-not (Test-Path $CentralLogDir)) {
|
||||
New-Item -ItemType Directory -Path $CentralLogDir -Force | Out-Null
|
||||
}
|
||||
$dest = Join-Path $CentralLogDir ("{0}_{1}.log" -f $env:COMPUTERNAME, (Get-Date -Format "yyyyMMddHHmmss"))
|
||||
Copy-Item -Path $LogFile -Destination $dest -ErrorAction SilentlyContinue
|
||||
} catch {}
|
||||
|
||||
Write-Log "Deploy-PrinterDriver script completed."
|
||||
exit 0
|
||||
``
|
||||
Reference in New Issue
Block a user