
🚀 Automatisert skriverinstallasjon med PowerShell
I en hverdag der effektivitet og driftssikkerhet er avgjørende, kan automatisering av rutineoppgaver spare både tid og frustrasjon. Hos Logje Data AS har vi utviklet et PowerShell-skript som forenkler installasjonen av nettverksskrivere – perfekt for IT-administratorer som ønsker en sømløs utrulling av skrivere i små og mellomstore nettverk.
🛠 Hva gjør skriptet?
Dette skriptet automatiserer hele prosessen med å installere en nettverksskriver, inkludert:
- Fjerning av gamle skrivere og porter knyttet til en spesifikk IP-adresse.
- Nedlasting og utpakking av driverpakke fra en angitt URL.
- Installasjon av skriverdriver via INF-fil.
- Opprettelse av skriverport og installasjon av skriver med ønsket navn.
- Opprydding av midlertidige filer etter installasjon.
Alt loggføres i en egen loggfil for enkel feilsøking og dokumentasjon.
🧩 Hvorfor bruke dette?
- Standardisering: Samme oppsett hver gang, uten manuelle feil.
- Tidsbesparelse: Installer en skriver på under ett minutt.
- Skalerbarhet: Tilpass skriptet for flere skrivere eller lokasjoner.
📦 Klar til bruk
Skriptet er klart til bruk og kan enkelt tilpasses med egne drivere, IP-adresser og skrivernavn. Det er ideelt for bruk i Windows-miljøer med behov for rask og repeterbar skriverutrulling.
🖥 Hvordan kjøre skriptet?
📁 Forberedelser
- Lagre skriptet som en
.ps1-fil, for eksempelinstaller_skriver.ps1. - Opprett mappen
C:\temp\skriver\hvis den ikke finnes – skriptet bruker denne til midlertidige filer. - Sørg for at du har administratorrettigheter, da installasjon av drivere og skrivere krever dette.
▶️ Kjøring
Alternativ 1: Høyreklikk og kjør som administrator
- Høyreklikk på
.ps1-filen og velg «Kjør med PowerShell». - Hvis du har restriksjoner på skriptkjøring, se neste punkt.
Alternativ 2: Kjør fra PowerShell med riktig policy
Åpne PowerShell som administrator.
Hvis du får feilmelding om kjørepolicy, kjør: Set-ExecutionPolicy RemoteSigned
- Naviger til mappen der skriptet ligger:
- Kjør skriptet: .\installer_skriver.ps1
installer_skriver.ps1 skriptet.
# -------------------- Variabler som må endres til din skriver modell / ønske ----------------------------------
# Loggfil for installasjon
$logFile = "C:\temp\skriver\install_log.txt"
# Midlertidig mappe og filbaner
$TempDir = "C:\temp\skriver\"
$outputPath = "$TempDir\driver.zip"
$destinationPath = $TempDir
# Nedlastingslenke for skriverdriver
$zipUrl = 'URL til *.zip filen med driver'
# Navn på skriver som vises etter installasjon
$Printer_Name = "Skriver navn"
# INF-fil som inneholder driverne
$inf_File = 'Xerox_VersaLink_C7120_C7125_C7130_PCL6.inf'
# Skriverens IP-adresse
$Printer1_IP = ""
# Navn på skriverdriver (kan hentes fra INF-filen)
$Driver_Name = "Xerox VersaLink C7130 Color MFP V4 PCL6"
# ------------------------- Start logging ----------------------------------------------------------------------------
Start-Transcript -Path $logFile -Append
# ------------------------- Fjern eksisterende skriver og port ----------------------------------------------------------------------------
# Definer IP-adressen til skriveren som skal fjernes
$printerIP = $Printer1_IP
# Hent alle skrivere
$printers = Get-Printer
# Filtrer skrivere som bruker samme IP-adresse i portnavnet
$targetPrinters = $printers | Where-Object {
$portName = $_.PortName
$port = Get-PrinterPort -Name $portName
$port.PrinterHostAddress -eq $printerIP
}
# Fjern skrivere som matcher
foreach ($printer in $targetPrinters) {
Write-Host "Fjerner skriver: $($printer.Name)"
Remove-Printer -Name $printer.Name
}
# Fjern porten hvis den finnes
$portToRemove = Get-PrinterPort | Where-Object { $_.PrinterHostAddress -eq $printerIP }
if ($portToRemove) {
Remove-PrinterPort -Name $portToRemove.Name
Write-Host "Fjernet skriverport: $($portToRemove.Name)"
}
# ---------------------- Last ned og pakk ut driver ----------------------------------------------------------------------------
# Opprett midlertidig mappe hvis den ikke finnes
if ((Test-Path $TempDir) -eq $false) {
New-Item -ItemType Directory -Path $TempDir -ErrorAction SilentlyContinue | Out-Null
}
# Last ned driver-zip
Invoke-WebRequest -Uri $zipUrl -OutFile $outputPath
# Pakk ut zip-filen
Expand-Archive -Path $outputPath -DestinationPath $destinationPath
# -------------------------- Installer skriver ----------------------------------------------------------------------------
pnputil.exe /add-driver "$destinationPath\$inf_File" /install
Add-PrinterDriver -Name $Driver_Name
Add-PrinterPort -Name $Printer1_IP -PrinterHostAddress $Printer1_IP
Add-Printer -Name $Printer_Name -DriverName $Driver_Name -PortName $Printer1_IP
# ---------------------------- Rydd opp midlertidige filer ----------------------------------------------------------------------------
Remove-Item -Path $destinationPath -Recurse -Force
Stop-Transcript
🧭 Hvordan finne riktig skriverdriver
Gå til produsentens nettside
Besøk nettsiden til skriverprodusenten (f.eks. Xerox, HP, Canon) og søk etter modellen din.Velg riktig operativsystem
Sørg for at du velger driver som passer til operativsystemet (f.eks. Windows 10/11 64-bit).Last ned driverpakken
Dette er ofte en.zip-fil eller en.exe-fil som kan pakkes ut. Du trenger tilgang til INF-filen inni denne pakken.
📄 Hva er en INF-fil?
En INF-fil er en tekstfil som beskriver hvordan en driver skal installeres. Den inneholder informasjon om:
- Hvilke enheter den støtter
- Hvilke filer som skal kopieres
- Driverens navn (viktig for PowerShell)
🔍 Hva du skal se etter i INF-filen
Åpne INF-filen i Notisblokk Høyreklikk på INF-filen og velg “Åpne med” → “Notisblokk”.
Se etter
[Manufacturer]-seksjonen Den peker til hvilke modeller som støttes.Finn
[Models]-seksjonen Her finner du linjer som:"Xerox VersaLink C7130 Color MFP V4 PCL6" = InstallSection, USBPRINT\...Det som står i anførselstegn er driverens navn – dette er det du bruker i PowerShell som
$Driver_Name.Sjekk at driveren er signert og kompatibel Se etter linjer som refererer til
.cat-filer (katalogfiler) og.dll-filer. Disse må være til stede i samme mappe.
✅ Tips
- Bruk
pnputil.exe /enum-driversetter installasjon for å se hvilke drivere som er lagt til. - Du kan også bruke
Get-PrinterDriveri PowerShell for å se installerte drivere. - Hvis du er usikker på hvilken INF-fil som gjelder, se etter den som matcher modellnavnet i filnavnet eller innholdet.
🧩 Hva skjer under en driverinstallasjon?
Når du installerer en skriverdriver manuelt (eller via skript), skjer følgende:
1. INF-filen leses
INF-filen er en instruksjonsfil som forteller Windows:
- Hvilke filer som skal kopieres
- Hvilke enheter driveren støtter
- Hvilke registerinnstillinger som skal legges til
- Hvilket navn driveren skal ha i systemet
2. Driverfiler kopieres
Filer som .dll, .cat, .gpd, .ppd og .xml kopieres til systemmapper som:
C:\Windows\System32\DriverStore\FileRepositoryC:\Windows\System32\spool\drivers
3. Driveren registreres
Windows bruker pnputil.exe eller Add-PrinterDriver til å registrere driveren i systemet.
🔍 Hvordan finne riktig informasjon i INF-filen
Når du åpner INF-filen i Notisblokk, se etter disse seksjonene:
🔹 [Manufacturer]
Forteller hvilke produsenter som er inkludert i filen.
🔹 [Xerox_Models] (eller tilsvarende)
Her finner du modellnavnene og tilhørende installasjonsseksjoner:
👉 «Xerox VersaLink C7130 Color MFP V4 PCL6» er det du bruker som $Driver_Name i PowerShell.
🔹 [Install_Xerox]
Denne seksjonen definerer hvilke filer og innstillinger som brukes for installasjonen.
🛠 Verktøy du kan bruke
pnputil.exe
Brukes til å legge til og installere drivere:Get-PrinterDriver
Viser installerte drivere:
✅ Tips for vellykket installasjon
- Sørg for at INF-filen og alle tilhørende filer ligger i samme mappe.
- Bruk alltid 64-bit driver hvis du kjører 64-bit Windows.
- Unngå å bruke gamle drivere – last ned siste versjon fra produsenten.
- Test driveren manuelt før du automatiserer installasjonen med PowerShell. (test gjerne i Microsoft Sandbox, egen artikkel kommer snart)
