PowerShell: Karmen Kattai, VõrdleNimekirju.ps1

From ICO wiki
<#
 
.SYNOPSIS
    Skript võrdleb kohalikus arvutis installeeritud programmide nimekirja 
    tekstifailis toodud programmide kontrollnimekirjaga.
 
.DESCRIPTION
    Skript võrdleb kohalikus arvutis installeeritud programmide nimekirja 
    tekstifailis toodud programmide kontrollnimekirjaga. Tulemus, ühine ja 
    mitteühine osa, väljastatakse tekstifailis. Mitteühine osa jaotub omakorda 
    kaheks - programmid, mis on installeeritud, kuid pole toodud kontrollnimekirjas 
    ning vastupidi. 
    Kontrollnimekiri peab sisaldama programmide tervet DisplayName-i või osa sellest. Näide:
    Mozilla
    FileZilla Client 3.5.0
    Oracle VM
    Kontrollnimekiri ei tohi sisaldada tühje ridu.
    
.VERSION
    0.1
  
.NOTES
    Autor: Karmen Kattai
 
#>


# Loeme arvutisse installeeritud programmide nimed muutujasse
$list = Get-ItemProperty "hklm:\software\microsoft\windows\currentversion\uninstall\*" | Select-Object DisplayName


# Küsime kasutajalt kontrollnimekirja asukoha
$from = Read-Host "Kus asub kontrollnimekirja sisaldav fail?"


#Kontrollime, kas selline fail on olemas
$fileExists = Test-Path $from 

If ($fileExists -eq $False) {
    $a = new-object -comobject wscript.shell
    $sonum = $a.popup("Ei leia sellist faili",0,"Error ",0)
}

Else {
    #Loeme kontrollnimekirja andmed muutujasse
    $kontr = Get-Content $from

    $yhine = New-Object System.Collections.ArrayList
    $puuduv = New-Object System.Collections.ArrayList


    #Võrdleme nimekirjasid
    Foreach ($first in $kontr)
    {
    
     if($list -match $first) {
         $list = @($list | where-Object {$_-notMatch $first})
         $yhine.Add($first) > $null
     }
     
     else {
         $puuduv.Add($first) > $null
     }
    }

    #Küsime kasutajalt, kuhu salvestada tulemus
    $tulemus = Read-Host "Kuhu salvestada tulemus?"


    #Väljastame tulemuse.
    "-----------------------------------------------`n" |Out-File -Append $tulemus
    "Need programmid on installeeritud (ühine osa):" |Out-File -Append $tulemus 
    $yhine |Out-File -Append $tulemus
    "-----------------------------------------------`n" |Out-File -Append $tulemus
    "Need programmid pole installeeritud:" |Out-File -Append $tulemus
    $puuduv |Out-File -Append $tulemus
    "-----------------------------------------------`n" |Out-File -Append $tulemus
    "Neid programme pole kontrollnimekirjas märgitud:" |Out-File -Append $tulemus
    $list |Out-File -Append $tulemus

}