# Powershell Programmbeispiele

#### Programme schließen

```powershell
Get-Process notepad | Stop-Process -Verbose
```

##### Edge Browser mit mehreren Seiten öffnen

```powershell
Start-Process msedge -ArgumentList "nc.hhml.selfhost.co www.duckduckgo.com"
```

#### Mit einer Verknüpfung ein Powershell-Skript ausführen

```powershell
pwsh.exe -noExit -NoProfile -NoLogo -Command "Get-Eventlog -LogName Aplication -Newest 5"
```

#### Vergleichen zweier Dateien

```powershell
Compare-Object -ReferenceObject (Get-Content $home\usernames.txt) -DifferenceObject (Get-Content $home\usernames_unique.txt)
# in den Klammern wird sofort ausgeführt, bevor die ganze Zeile ausgeführt wird
```

#### Aktuellen Speicherpfad des Skripts abrufen

```powershell
$Skriptpfad = Split-Path -Parent $MyInvocation.MyCommand.Path 
$input_file = "$($Skriptpfad)\input.txt"
```

#### Windows Updates anzeigen

die in den letzten 50 Tagen installiert wurden

```powershell
Get-Hotfix | Where-Object InstalledOn -ge (Get-Date).AddDays(-50)
```

#### Öffnen einer Textdatei und das erste Wort in Variable speichern

```powershell
$variable = @() # Initialisiere eine leere Variable als Array

Get-Content "C:\Pfad\zur\Datei.txt" | ForEach-Object {
    $firstWord = $_.Split(" ")[0] # Splitte die aktuelle Zeile anhand des Leerzeichens und wähle das erste Wort aus
    $variable += $firstWord # Füge das erste Wort der Zeile dem Array hinzu
}
```

#### Updates überprüfen

```powershell
$ComputerName = "RemoteComputerName"
$Date = (Get-Date).AddDays(-50)
Invoke-Command -ComputerName $ComputerName -ScriptBlock {
    Get-CimInstance -ClassName Win32_QuickFixEngineering | Where-Object { $_.InstalledOn -ge $using:Date } | Select-Object HotFixID, InstalledOn
}
```