Added Printer Check-Repair
This commit is contained in:
parent
1de04776fa
commit
56a4e3fa47
141
Tasks/Check-Repair-Printers.ps1
Normal file
141
Tasks/Check-Repair-Printers.ps1
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
# Define printer information in a hashtable for easy management
|
||||||
|
$printers = @{
|
||||||
|
'Aspire Admin (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera CS 306ci KX"
|
||||||
|
PrinterPort = "10.4.2.51"
|
||||||
|
PrinterPortName = "10.4.2.51"
|
||||||
|
}
|
||||||
|
'Aspire Hallway (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.54"
|
||||||
|
PrinterPortName = "10.4.2.54"
|
||||||
|
}
|
||||||
|
'Aspire Lobby (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.52"
|
||||||
|
PrinterPortName = "10.4.2.52"
|
||||||
|
}
|
||||||
|
'Aspire Office (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.53"
|
||||||
|
PrinterPortName = "10.4.2.53"
|
||||||
|
}
|
||||||
|
'Center Annex (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera CS 306ci KX"
|
||||||
|
PrinterPort = "10.4.2.58"
|
||||||
|
PrinterPortName = "10.4.2.58"
|
||||||
|
}
|
||||||
|
'Center Hallway (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.56"
|
||||||
|
PrinterPortName = "10.4.2.56"
|
||||||
|
}
|
||||||
|
'Center Office (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.55"
|
||||||
|
PrinterPortName = "10.4.2.55"
|
||||||
|
}
|
||||||
|
'Center Psych (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.57"
|
||||||
|
PrinterPortName = "10.4.2.57"
|
||||||
|
}
|
||||||
|
'DQ Annex (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.59"
|
||||||
|
PrinterPortName = "10.4.2.59"
|
||||||
|
}
|
||||||
|
'Ward Hallway (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.61"
|
||||||
|
PrinterPortName = "10.4.2.61"
|
||||||
|
}
|
||||||
|
'Ward Office (Kyocera)' = @{
|
||||||
|
DriverPath = "C:\Scripts\Printers\00-Kyocera-Driver\KX852222\64bit\OEMSETUP.INF"
|
||||||
|
DriverName = "Kyocera TASKalfa 5054ci KX"
|
||||||
|
PrinterPort = "10.4.2.60"
|
||||||
|
PrinterPortName = "10.4.2.60"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to check if printer exists with the same name, driver, and port
|
||||||
|
function Check-PrinterExists {
|
||||||
|
param(
|
||||||
|
[string]$PrinterName,
|
||||||
|
[string]$DriverName,
|
||||||
|
[string]$PortName
|
||||||
|
)
|
||||||
|
|
||||||
|
$existingPrinters = Get-Printer | Where-Object {
|
||||||
|
$_.Name -eq $PrinterName -and
|
||||||
|
$_.DriverName -eq $DriverName -and
|
||||||
|
$_.PortName -eq $PortName
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($existingPrinters | Measure-Object).Count -gt 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to handle printer installation or reinstallation
|
||||||
|
function Install-Printer {
|
||||||
|
param(
|
||||||
|
[string]$PrinterName,
|
||||||
|
[hashtable]$PrinterInfo
|
||||||
|
)
|
||||||
|
|
||||||
|
$driverPath = $PrinterInfo.DriverPath
|
||||||
|
$driverName = $PrinterInfo.DriverName
|
||||||
|
$printerPort = $PrinterInfo.PrinterPort
|
||||||
|
$printerPortName = $PrinterInfo.PrinterPortName
|
||||||
|
|
||||||
|
# Check if the printer with the exact configuration already exists
|
||||||
|
if (Check-PrinterExists -PrinterName $PrinterName -DriverName $driverName -PortName $printerPortName) {
|
||||||
|
Write-Warning "Printer with the same name, driver, and port already exists."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if the printer with the same name exists but with different configuration
|
||||||
|
$existingPrinter = Get-Printer | Where-Object { $_.Name -eq $PrinterName }
|
||||||
|
if ($existingPrinter) {
|
||||||
|
Write-Warning "Printer with the same name exists, but configuration differs. Deleting and reinstalling."
|
||||||
|
Remove-Printer -Name $PrinterName -Confirm:$false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install the driver if not already installed
|
||||||
|
if ($null -eq (Get-PrinterDriver -name $driverName -ErrorAction SilentlyContinue)) {
|
||||||
|
pnputil.exe /a $driverPath
|
||||||
|
Add-PrinterDriver -Name $driverName
|
||||||
|
} else {
|
||||||
|
Write-Warning "Printer driver already installed"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add printerPort if not already exists
|
||||||
|
if ($null -eq (Get-PrinterPort -name $printerPortName)) {
|
||||||
|
Add-PrinterPort -Name $printerPortName -PrinterHostAddress $printerPort
|
||||||
|
} else {
|
||||||
|
Write-Warning "Printer port with name $($printerPortName) already exists"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Add the printer
|
||||||
|
Add-Printer -Name $PrinterName -DriverName $driverName -PortName $printerPortName -ErrorAction stop
|
||||||
|
Write-Host "Printer '$PrinterName' successfully installed" -ForegroundColor Green
|
||||||
|
printUI.exe /Sr /n $PrinterName /a C:\Scripts\Printers\03-Printer-Properties\$PrinterName.dat d g
|
||||||
|
} catch {
|
||||||
|
Write-Host $_.Exception.Message -ForegroundColor Red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install each printer defined in the hashtable
|
||||||
|
foreach ($printerName in $printers.Keys) {
|
||||||
|
Install-Printer -PrinterName $printerName -PrinterInfo $printers[$printerName]
|
||||||
|
}
|
||||||
2
Tasks/System-Tasks/Check-Repair-Printers.bat
Normal file
2
Tasks/System-Tasks/Check-Repair-Printers.bat
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
@echo off
|
||||||
|
powershell.exe -ExecutionPolicy Bypass -File "c:\scripts\Tasks\Check-Repair-Printers.ps1"
|
||||||
Loading…
x
Reference in New Issue
Block a user