Posts mit dem Label PowerShell werden angezeigt. Alle Posts anzeigen
Posts mit dem Label PowerShell werden angezeigt. Alle Posts anzeigen

Donnerstag, 5. März 2026

Windows 10/11 ‑ Telemetrie abschalten: schnell gemacht, mehr Datenschutz

Windows sendet standardmäßig Diagnosedaten an Microsoft. Wer das minimieren möchte, kann den Telemetriedienst DiagTrack und die zugehörige ETWSession deaktivieren. Ein Schritt, der schon vom BSI empfohlen wurde.

Telemetrie per PowerShell deaktivieren:

1. Terminal als Administrator öffnen

2. Befehle ausführen:

Get-Service -Name "DiagTrack" | Stop-Service -PassThru | Set-Service -StartupType Disabled -PassThru

Get-AutologgerConfig -Name "Diagtrack-Listener" | Set-AutologgerConfig -Start 0 -PassThru

Die Änderung bleibt in der Regel auch nach Updates bestehen. In services.msc sollte der Dienst „Benutzererfahrungen und Telemetrie…“ anschließend auf Deaktiviert stehen.

Weitere DatenschutzEinstellungen wie das Abschalten von SmartScreen sind möglich, werden jedoch nicht pauschal empfohlen, da sie die Sicherheit reduzieren können.

Dienstag, 3. März 2026

Windows 11 Widgets - Mehr Ballast als Nutzen!

Die Widgets in Windows 11 sollen schnelle Infos liefern, bestehen aber größtenteils aus einem Nachrichten‑Feed voller Clickbait. Zwar lassen sich einzelne Quellen blockieren, doch echte Qualität entsteht dadurch selten und viele Links führen ohnehin zu msn.com statt zur eigentlichen Quelle.


Nützliche Widgets wie Wetter oder Timer gibt es zwar, doch der Gesamtmehrwert bleibt gering. Viele Nutzer entscheiden sich deshalb, die Widgets komplett zu entfernen.

So deinstallierst du die Widgets

  1. Windows + X drücken
  2. Terminal (Administrator) öffnen
  3. Diesen PowerShell‑Befehl eingeben:
    • Get-AppxPackage MicrosoftWindows.Client.WebExperience | Remove-AppxPackage

 

Nach wenigen Sekunden ist das Widget‑Panel verschwunden, ganz ohne Neustart!
 

Mittwoch, 17. April 2024

PowerShell - ISO-Dateien mounten (Mount-DiskImage)

Bei älteren Versionen von Windows wurden noch separate Tools benötigt, um ISO-Dateien als virtuelle Laufwerke einzubinden (mounten). Seit Windows 8 ist dies mit Hilfe der PowerShell und der Funktion Mount-DiskImage Out-of-the-box möglich.


Mounting ISO

ISO-Datei über -ImagePath übergeben (absoluter Pfad inklusive Laufwerkskennnung):

Mount-DiskImage -ImagePath "E:\ISO-Files\My US Visit Fall 2010 Pictures.iso"

Dismount

Ein Dismount erfolgt mit Hilfe der Funktion Dismount-DiskImage:

Dismount-DiskImage -ImagePath "E:\ISO-Files\My US Visit Fall 2010 Pictures.iso"


Samstag, 23. Januar 2021

PowerShell - Datum (Erstelldatum) von Dateien nachträglich ändern (rekursiv)

Möchte man das Erstelldatum von Dateien anpassen bzw. manipulieren, bietet sich das nachfolgende PowerShell-Script an.


Mit dem Befehl $dt = get-date 1.8.2020-13:45 lässt sich ein bestimmtes Datum setzen oder alternativ das aktuelle Datum verwenden.

Mit dem Befehl $User = [Environment]::UserName kann man den aktuellen Benutzernamen auslesen und so ggf. in der Variable "$scriptPath" verwendet werden.

Mit Hilfe von Get-ChildItem, kann man rekursiv und auch nur nach Bestimmten Dateien *.doc,*.pdf suchen.

Durch SetCreationTime wird für die jeweils gefundene Datei ein neues Erstelldatum gesetzt.
---

#$dt = get-date 1.8.2020-13:45
$dt = get-date

$User = [Environment]::UserName
#Write-Host $User.ToLower()

$scriptPath = "C:\Users\" + $User.ToLower() + "\OneDrive\"
#get the content of a directory you can use
$files = Get-ChildItem $scriptPath -Recurse #-Include *.doc,*.pdf

#loop
for ($i=0; $i -lt $files.Count; $i++) {
    #$outfile = $files[$i].FullName + "out"
    Write-Host "Found file - " + $files[$i].FullName -ForegroundColor Magenta
    [System.IO.File]::SetCreationTime($files[$i].FullName, $dt)
}

 

Mittwoch, 13. Januar 2021

PowerShell - Ausführung von Skripts auf diesem System deaktiviert (enable execution)

Nach zum Beispiel einer Neuinstallation von Windows 10 ist das Ausführen von PowerShell Scripten (z.B. https://sebastianhemel.blogspot.com/2020/12/deutscher-pressevertrieb-pdf-dateien.html) nicht mehr erlaubt. Eine Aktivierung ist mit dem folgenden Befehl möglich.

Meldung: Ausführung von Skripts auf diesem System deaktiviert

Die Datei "xyz.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter
"about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
    + CategoryInfo          : Sicherheitsfehler: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess


Die Ausführung von PowerShell-Scripts zulassen

Die Windows PowerShell mit der Option "Als Administrator ausführen" starten.
Hinweis: Nur Mitglieder der Administratorgruppe auf dem Computer können die Ausführungsrichtlinie ändern.

Die Ausführung nicht signierter Skripte wird mit dem folgenden Befehl aktiviert:

Set-Execution-Politik ferngesteuert


Mittwoch, 23. Dezember 2020

Deutscher Pressevertrieb - PDF Dateien mit Hilfe von PowerShell Script sichern

Die DPV bietet viele verschiedene Android Apps um sein digitales Abo auf dem Smartphone/Tablet lesen zu können. Leider gibt es keine direkte Möglichkeit ein komplettes PDF herunterzuladen. Mit Hilfe einem PowerShell Script und dem Beitrag Linux - PDF Dokumente zusammenfügen / Merge PDF files ist dies dennoch möglich.


Das nachfolgende Beispiel wurde mit der App von "Schöner Wohnen" erfolgreich getestet!

Der Download innerhalb der App wird im Speicher des Smartphones unter dem folgenden Ordner abgelegt:

  • storage/696E-E61B/Android/data/com.audiencemedia.app2928/files/content/2bfdd49d-d113-4b18-b9ab-e84abbc94789/3abcca1a-0f52-4f7b-86c7-06dea1a9f24a/2

 

Diesen Ordner am Besten mit TotalCommander suchen und auf den PC kopieren (zum Beispiel per WebDav Share).

Jetzt kann das folgende PowerShell Script verwendet werden: https://www.shemel.de/download/powershell/GetPdfFromDigitalEpaper.ps1
Hinweis: Der Paramter zum Donwload Ordner muss natürlich ggf. angepasst werden.

Zum Abschluss im Ordner "..\3abcca1a-0f52-4f7b-86c7-06dea1a9f24a\2\pdf" den Befehl pdfunite *.pdf 01-2021.pdf , aus dem Beitrag https://sebastianhemel.blogspot.com/2020/09/linux-pdf-dokumente-zusammenfugen-merge.html ausführen!

# (c) 2020 - Sebastian Hemel, www.shemel.de
# Get One PDF File from "SCHÖNER WOHNEN Digital E-Paper" - https://play.google.com/store/apps/details?id=com.audiencemedia.app2928
######################################################################################################################################################
# Note: You can find the download folder in the app directory
# storage/696E-E61B/Android/data/com.audiencemedia.app2928/files/content/2bfdd49d-d113-4b18-b9ab-e84abbc94789/3abcca1a-0f52-4f7b-86c7-06dea1a9f24a/2
######################################################################################################################################################

# Loop through files in a directory using PowerShell
$pathToFiles = 'D:\Downloads\Schöner Wohnen 01-2021\3abcca1a-0f52-4f7b-86c7-06dea1a9f24a\2\'
$copyPath = $pathToFiles + 'pdf\'
$scriptPath   = '.\*'
$pattern1 = "page-" # only get files like page-02_2eb264de-f649-4c11-8bee-eeef504aaf48.stxml
$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.stxml

# generate folder for pdfs
New-Item -Name „pdf“ -ItemType Directory -Path $pathToFiles

foreach ($file in $fileNames) {

    if ($file.name -match $pattern1){
        $filesInDirectory = $file.Basename + $file.Extension
        Write-Output $filesInDirectory

        [xml]$xml = Get-Content $pathToFiles$filesInDirectory
        #Write-Output $xml.stage.scene.pdf | Where-Object {$_.contentURL} | Select-Object id
        #Adding leading zeros to a file name
        $newFilename1 = "{0:d3}$($_.extension)" -f [int]$fileNames.IndexOf($file)
        $counter = 0
        
        #copy PDF-files and rename it
        # page-02_2eb264de-f649-4c11-8bee-eeef504aaf48.stxml
        # ==> 5009b369-ff27-4136-9cad-7424be6b0c8b.pdf ==> ./pdf/000-1.pdf
        # ==> d90b35dc-ce19-4e78-b944-87d9503f4850.pdf ==> ./pdf/000-2.pdf
        $xml.stage.scene.pdf | Where-Object {$_.contentURL} | Select-Object id | ForEach-Object {
            $fileName = $_.id
            $fileName = $pathToFiles + $fileName
            Write-Output 'Copy: '$fileName
            Copy-Item $fileName $copyPath$newFilename1'-'$((++$counter))'.pdf'
        }
    }
}


Donnerstag, 30. Juli 2020

Windows 10 - OpenSSH und Windows Terminal

OpenSSH wird mittlerweile unter Windows 10 mit der Version 1809 standardmäßig mit installiert. So kann man sich genau wie unter Linux zu jedem Gerät mit aktivierten SSH verbinden oder SSH-Keys direkt unter Windows 10 erstellen.


Verbindung zu einem RaspberryPi aufbauen:
  • ssh pi@192.168.1.110

SSH-Keys erzeugen (wenn eine Anmeldung per Kennwort verboten ist):
  • ssh-keygen
Standardmäßigen wird ein 2048-Bit-RSA-Key erstellt. Weitere Infos auch hier: https://docs.microsoft.com/de-de/windows-server/administration/openssh/openssh_keymanagement

Das neue Windows Terminal kann man mittlerweile vielfältig seinen Wünschen anpassen. Zum Beispiel kann man von der PowerShell aus Windows Terminal mit drei Bereichen (Eingabeaufforderung, PowerShell und Linux) öffnen.


wt -p "Command Prompt" `; split-pane -p "Windows PowerShell" `; split-pane -H wsl.exe


Weitere Infos finden sich hier: https://docs.microsoft.com/de-de/windows/terminal/

Samstag, 11. Juli 2020

Reguläre Ausdrücke (RegExp) mit Grep - Beispiele

Reguläre Ausdrücke (regular expression oder RegExp) bzw. Zeichenketten, können als Filterkriterien in Textsuchen verwendet werden. Der Text wird dabei mit dem "Muster" des regulären Ausdrucks abgeglichen. Somit kann man etwas suchen und finden, auch dann wenn man nicht mehr die genaue Schreibweise kennt.


Unter Linux kann man Hilfe von grep Dateien nach bestimmten Textzeichen durchsuchen. Unter Windows wäre die Verwendung mit Hilfe von grepWin (Regular expression search and replace for Windows) oder Select-String möglich.

Eine einfache Suche ist mit dem folgenden Befehl möglich:
  • grep 'hemel' \ ~/*
Der Parameter -E von grep definiert einen Regulären Ausdruck und die runden Klammern als Sonderzeichen. Mit dem Parameter -i ignoriert grep zusätzlich Groß- und Kleinschreibung.
Der | Strich (Pipe) steht für ein logisches "oder", somit wird nach dem "h" nach "hemel" und "hamel" gesucht.
  • grep -E -i 'h(e|a)mel' \ ~/*
Möchte man nach mehreren Zeichen inkl. Umlauten suchen, muss man die Zeichengruppe [] inkl. dem Quantifer + verwenden. Jetzt wird nach einem oder mehreren Zeichen gesucht, die innerhalb der [] vorkommen.
  • grep -E -i 'h[\0-9A-F]+mel' \ ~/*

Weitere Beispiele

  • [he]+ "h", "e", "hh", "hheeh" usw.
  • [0-6]{2,5} zwei bis fünf Ziffern von 0-6 in Folge, z. B. "16" oder "23456", jedoch nicht "7", "0.1" oder "1bca2“
  • h.{0,2}mel beliebiges Zeichen, min 0mal, max 2mal vorkommen, z.B. hemel, haemel, hmel

Wichtige Zeichen

  • . einzelnes Zeichen
  • (..) Gruppe von Elementen
  • ..|.. Oder Verknüpfung
  • ^ findet den Anfang einer Zeile
  • $ findet das Ende einer Zeile

Wichtige Zeichengruppen

  • [eam] ein Zeichen "e", "a" oder "m"
  • [0-9A-F] ein großer beliebiger Buchstabe oder eine beliebige Ziffer
  • [A-Za-z0-9] ein beliebiger Buchstabe oder eine beliebige Ziffer

Vordefinierte Zeichenklassen

  • \d Ziffer [0-9]
  • \D keine Ziffer [^\d] bzw. [^0-9]
  • \w Buchstabe [a-zA-Z_0-9]
  • \W weder Buchstabe noch Zahl noch Unterstrich [^\w]
  • \s whitespace Leerzeichen und Steuerzeichen \f, \n, \r, \t und \v
  • \S kein whitespace

Quantifier

  • ? optional, kommt null- oder einmal vor {0,1}
  • * beliebig oft oder auch keinmalt {0,}
  • +  mindestens einmal oder auch mehrfach {1,}
  • {n} muss exakt n-mal vorkommen {n,n}
  • {n,m} muss mindestens n-mal und darf maximal m-mal vorkommen

Unter debuggex.com kann man die erstellte regular expression testen und verstehen.


Montag, 6. April 2020

Windows 10 - PowerShell Module für Pop-up- / Toast-Notifications

Die Benachrichtigungen von Windows 10 mit Hilfe von BurntToast sinnvoll für eigene Zwecke nutzen. Zum Beispiel um Nachrichten vom Raspberry Pi an einen Windows 10 Rechner zu senden.


Mit dem o.g. PowerShell-Modul ist es möglich Windows 10 Benachrichtigungen anzuzeigen.

Paket mit PowerShellGet installieren.
Hinweis: PowerShell muss als Administrator ausgeführt werden.
  • Install-Module -Name BurntToast

Jetzt muss bei der Ausführungsrichtlinie das voreingestellte "Restricted" auf "RemoteSigned" geändert werden.
Hinweis: Die möglichen Werte für ExecutionPolicy findet man hier http://technet.microsoft.com/de-de/library/dd347628.aspx .
  • Set-ExecutionPolicy RemoteSigned

Mit dem folgenden Befehl kann man eine Benachrichtigung mit Logo generieren.
  • New-BurntToastNotification -AppLogo D:\hemel_sebastian.jpg -Text "Hello World!", 'Logo Test'

Mit einem PowerShell Script von heise.de ist es möglich UDP-Pakete zu empfangen. So kann man von einem beliebigen Rechner z.B. einem Raspberry Pi Statusmeldungen / Logs usw. an einen Windows PC senden (siehe auch c't 8/2020 S. 158).