Installation af software ved brug af et script - Få en "frisk" WIN-PC klar på ingen tid

Ron Brevstgaard
Ron Brevstgaard

At stå med en nyindkøbt bærbar kan være en tidskrævende opgave medmindre man allerede er klar med f.eks. Intune, Symantec el. noget som CapaInstaller men det bruger man næppe derhjemme så lad os nu se på noget, som du bestemt har adgang til og som er kvit og frit.

Vi kan nemlig hente software/applikationer ned på vores Windows-PC ("WIN-PC") ved brug af Windows Package Manager. Det kan vi gøre via et script eller vi kan indtaste noget som i Powershell:

winget install VideoLAN.VLC

Dette vil installere nyeste version af VLC media player men hvordan finder vi så ud af om det software vi lige står og mangler er at finde på denne måde uden vi skal ud og bruge Google? Jo det gør vi ved at benytte os af winget search så lad os prøve at se om ExpressVPN er at finde...

Det var den faktisk. Dvs. alt vi skal gøre er at udskifte winget install VideoLAN.VLC med winget install ExpressVPN.ExpressVPN og nu kan vi få ExpressVPN installeret direkte via vores terminal. Altså helt uden at skulle ind på deres hjemmeside og hente en applikationsinstaller(.exe). Og bare for god ordens skyld:

Hvad så hvis jeg vil opdatere det software jeg har installeret? Jo det gør vi blot ved at indtaste winget upgrade --all... Og igen, ikke noget med at skulle trykke op en opdateringsknap el. ind på en web-adresse og finde en nyere installationsfil. Dvs alt du skal er: *Husk at din terminal skal køres som administrator.


Nå, lad os nu lave et script der kan hente det software som du selv ønsker der skal installeres.

1. Først skal du tage stilling til om du bare vil benytte dig af Notesblok (notepad.exe) el. du i stedet vil få begyndt på PowerShell ISE. Hvis du er helt grøn el. bare "fatter hat" så gå PowerShell ISE-vejen. Det gør vi ved at søge efter Powershell og så vælge det resultat som hedder PowerShell ISE. Altså således:

2. Hvis du ikke ser et "Script Pane" skal du slå dette til (du behøver ikke vide hvad dettte er). Det gør du ved at gå under View - > Show script pane (el. du kan; Ctrl + R).

3. Indsæt nu den kodestump som er at finde herunder i din script pane (det hvide område). Bemærk at denne kodestump blot stiller dig et spørgsmål om du vil installere applikationen "X". I det her tilfælde MEGASync-klienten til Dropbox-alternativet MEGA.

do { $megasync = 'Installér MEGASync? - Cloud storage med 20GB gratis lagerplads. 25GB ved udfyldelse af TLF. nr.[Y/N]'
$megasyncrsp = Read-Host -Prompt $megasync} 
until ("y","n" -contains $megasyncrsp)
Som set herover bliver der spurgt til om man ønsker at installere Megasync men dette kunne være hvilken som helst applikation/software. Før at nævnte installeres vil man skulle indtaste "Y" efterfulgt af enter-tasten. Dvs man kan skippe det software man ikke lige står og skal bruge på den pågældende PC.

4. Lad os nu knytte en handling til vores installationsspørgsmål. Det gør vi ved at indtaste denne kodestump neden under:

if ($megasyncrsp -eq 'y') {
    winget install --id Mega.MEGASync -h --accept-package-agreements --accept-source-agreements
    }
Nu er vores spørgsmål i step-3 blevet knyttet sammen med en handling. Handlingen er at installere MEGASync ved indtastningen af "y".

5. Lad os afprøve dette inden at vi går videre (derfor det er smart hvis du har valgt at benytte dig af PowerShell ISE.

Se det virker jo faktisk efter vi har indtastet "y" efterfulgt af enter.

6. Så hele vores kodestump er altså:

do { $megasync = 'Installér MEGASync? - Cloud storage med 20GB gratis lagerplads. 25GB ved udfyldelse af TLF. nr.[Y/N]'
$megasyncrsp = Read-Host -Prompt $megasync} 
until ("y","n" -contains $megasyncrsp)

if ($megasyncrsp -eq 'y') {
    winget install --id Mega.MEGASync -h --accept-package-agreements --accept-source-agreements
    }
- Hvad du skal lave om er dette; $megasync, $megasyncrsp og så Mega.MEGASync. Dvs ønsker du f.eks. at blive spurgt om installation af Firefox udskift $megasync med $firefox, $megasyncrsp med $firefoxrsp. I stedet for --id Mega.MEGASync skal du gøre brug af Mozilla.Firefox.

7. Nu er det bare at indsætte kodestumper herover og gentage hvad der allerede er nævnt for hver stk. software/applikation du ønsker at tilføje.


Du kan f.eks. bruge dette som skabelon:

<#
.SYNOPSIS
Hent de applikationer der bruegs mest ved brug af Windows Package Manager - Dette script er mere eller mindre copy-paste.
.DESCRIPTION 
Dette script giver en prompt hvor man kan vælge at installere et bestemt stykke software eller ej. Hvis du ikke ændre i noget vil den spoerge til disse:
- MEGASync
- MullvadVPN
- ProtonVPN
- ProtonMail Bridge
- Google Chrome
- Gyazo
- Firefox
- VLC
- Git
- Windows Terminal 
- PowerShell
.OUTPUTS
.NOTES
Written by: Brevstgaard
Find me on:
* My Blog:	https://brevstgaard.blog
.EXAMPLE
.\InstallSoftware.ps1
Change Log
V1.00, 27th February 2022 - Initial version
#>

do { $megasync = 'Installér MEGASync? - Cloud storage med 20GB gratis lagerplads. 25GB ved udfyldelse af TLF. nr.[Y/N]'
$megasyncrsp = Read-Host -Prompt $megasync} 
until ("y","n" -contains $megasyncrsp)

do { $mullvadvpn = 'Installér MullvadVPN? - No-logs VPN (billig $5 om måneden).[Y/N]'
$mullvadvpnrsp = Read-Host -Prompt $mullvadvpn} 
until ("y","n" -contains $mullvadvpnrsp)

do { $protonvpn = 'InstallérProtonVPN? - God multi-hop VPN der dog koster en del.[Y/N]'
$protonvpnrsp = Read-Host -Prompt $protonvpn} 
until ("y","n" -contains $protonvpnrsp)

do { $protonmailbridge = 'Installér ProtonMail Bridge? - Bruger du ProtonMail og og skal den snakke sammen med f.eks. Outlook skal du bruge denne.[Y/N]'
$protonmailbridgersp = Read-Host -Prompt $protonmailbridge} 
until ("y","n" -contains $protonmailbridgersp)

do { $chrome = 'Installér Google Chrome? - Favorit-browseren hos mange.[Y/N]'
$chromersp = Read-Host -Prompt $chrome} 
until ("y","n" -contains $chromersp)

do { $gyazo = 'Installér Nota Gyazo? - God appikation til at lave screenshots/GIFs med. [Y/N]'
$gyazorsp = Read-Host -Prompt $gyazo} 
until ("y","n" -contains $gyazorsp)

do { $firefox = 'Installér Firefox? - Altid fint med en backup browser.[Y/N]'
$firefoxrsp = Read-Host -Prompt $firefox} 
until ("y","n" -contains $firefoxrsp)

do { $vlc = 'Installér VLC? - Super til f.eks. afspilning af mkv-filer.[Y/N]'
$vlcrsp = Read-Host -Prompt $vlc} 
until ("y","n" -contains $vlcrsp)

do { $git = 'Installér Git? - Versionskontrolsystem. Giver overblik lokalt og over sky-repository.[Y/N]'
$gitrsp = Read-Host -Prompt $git} 
until ("y","n" -contains $gitrsp)

do { $teams = 'Installér Microsoft Teams? - Giver god mening hvis du i forvejen benytter dig af Office365-pakken men ikke har behov for denne.[Y/N]'
$teamsrsp = Read-Host -Prompt $teams} 
until ("y","n" -contains $teamsrsp)

do { $winterm = 'Installér Windows Terminal?[Y/N]'
$wintermrsp = Read-Host -Prompt $winterm} 
until ("y","n" -contains $wintermrsp)

do { $powershell = 'Installér PowerShell?[Y/N]'
$powershellrsp = Read-Host -Prompt $powershell} 
until ("y","n" -contains $powershellrsp)

Write-Host "Det valgte software vil nu bliver installeret. " -ForegroundColor red -BackgroundColor white 

if ($megasyncrsp -eq 'y') {
    winget install --id Mega.MEGASync -h --accept-package-agreements --accept-source-agreements
    }

if ($mullvadvpnrsp -eq 'y') {
    winget install --id MullvadVPN.MullvadVPN -h --accept-package-agreements --accept-source-agreements
    }

if ($protonvpnrsp -eq 'y') {
    winget install --id ProtonTechnologies.ProtonVPN -h --accept-package-agreements --accept-source-agreements
    }


if ($protonmailbridgersp -eq 'y') {
    winget install --id ProtonTechnologies.ProtonMailBridge -h --accept-package-agreements --accept-source-agreements
    }

if ($chromersp -eq 'y') {
    winget install --id Google.Chrome -h --accept-package-agreements --accept-source-agreements
    } 

if ($gyazorsp -eq 'y') {
    winget install --id Nota.Gyazo -h --accept-package-agreements --accept-source-agreements
    } 

if ($firefoxrsp -eq 'y') {
    winget install --id Mozilla.Firefox -h --accept-package-agreements --accept-source-agreements
    } 

if ($vlcrsp -eq 'y') {
    winget install --id VideoLAN.VLC -h --accept-package-agreements --accept-source-agreements
    }
     
if ($gitrsp -eq 'y') {
    winget install --id git.git -h --accept-package-agreements --accept-source-agreements
    }

if ($teamsrsp -eq 'y') {
    winget install --id Microsoft.Teams -h --accept-package-agreements --accept-source-agreements
    }

if ($wintermrsp -eq 'y') {
    winget install --id Microsoft.WindowsTerminal -h --accept-package-agreements --accept-source-agreements
    } 

if ($powershellrsp -eq 'y') {
    winget install --id microsoft.powershell -h --accept-package-agreements --accept-source-agreements
    }
    
Write-Host "Det gik jo meget godt, genstart nu dit computer system. " -ForegroundColor red -BackgroundColor white


Kørsel af scriptet?

Jo, har du f.eks. gemt det på skrivebordet så gør som i GIFén herunder og kør det ved at højreklikke efterfulgt af Run with PowerShell. *Det er det samme du skal gøre lige meget hvilken mappe du har gemt scriptet i.

Det vil altså se sådan ud hvis du har brugt min skabelon:

PowerShell/wtWindows

Ron Brevstgaard

IT-Supporter, Herning HF & VUC. + Tidligere Linux Sysadmin / Systemadministrator (5 års erfaring). +7 års erfaring med SEO og link building +10 års erfaring med udvikling af hjemmesider og webshops.


  1. Minimal og anonym sporing af brugeradfærd.
  2. Eneste brug af cookies er _cfduid og _cflb - WAF og Load Balancing.
  3. Ingen deling af data med f.eks. Google.
  4. Databehandlingsaftale lavet med Cloudflare.
  5. Databehandlingsaftale lavet med DigitalOcean(DO).
  6. Kontaktformular er tilknyttet ProtonMail.
  7. Automatisk sletning af mails efter 30 dage.
  8. Filer modtaget opbevares med AES256 i CFB-mode.
  1. Ansible Advanced - Hands-On - DevOps.
  2. Google IT Support Professional Certificate.
  3. The Complete Node.js Developer Course (3rd Edition).
  4. Certified Microsoft Innovative Educator (MIE).
  5. Hootsuite Social Marketing Certification.
  6. Google Fundamentals of Digital Marketing 2019.
  7. Google Analytics for Power Users.
  8. Google Shopping ads Certification.
  9. Google Ads Search Certification.
  10. Google Analytics for Power Users.
  11. Aruba Certified Network Security Associate (ACNSA).
  12. *For datoer mv. - Se LinkedIn.
  1. Introduktion til PowerShell (Teknologisk Institut).