Private/Wissen/B_Basic/B8_PSProvider.ps1
<#
# PSProvider & PSDrive Über PowerShell Provider und Drive kann mittels Default-Cmdlets auf div. Technologien zugegriffen werden. - **Hashtags** PSProvider PSDrive - **Version** 2020.5.26 #> # ! Typische PowerShell Provider sind: # * Registry => Registrierungsdatenbank # * Alias => PowerShell Aliase # * Environment => Windows Umgebungsvariablen # * FileSystem => Dateisystem # * Function => PowerShell-Funktionen # * Variable => PowerShell-Variablen # * Certificate => X.509-Zertifikatsspeicher # * ActiveDirectory => [OPTIONAL] ActiveDirectory # * Exchange => [OPTIONAL] Exchange-Postfächer/-Ordner # * SqlServer => [OPTIONAL] Microsoft SQL-Server # * ... => u.v.m. # READ Weiterführende und Nachschlage-Informationen: Get-Help -Name 'about_Providers' -ShowWindow Get-Help -Name 'about_Path_Syntax' -ShowWindow Get-Help -Name 'about_Locations' -ShowWindow # ! Durch das importieren eines Modules können weitere PowerShell-Provider aktiviert werden: Get-PSProvider # vorher Import-Module -Name 'SqlServer' Get-PSProvider # nachher # ! Für die Interaktion mit den PowerShell-Providern gibt es Laufwerke (PowerShell-Drive) um auf die Inhalte per Pfad-Angabe zugreifen zu können: Get-PSDrive New-PSDrive -PSProvider 'FileSystem' -Name 'DL' -Root "$env:USERPROFILE\Downloads" New-PSDrive -PSProvider 'FileSystem' -Name 'GFU' -Root '\\srv00\disk\Raum5' New-PSDrive -PSProvider 'Registry' -Name 'HKCC' -Root 'HKEY_CURRENT_CONFIG' # ! PowerShell 7 - Ein neues PS-Laufwerk um benutzerbezogene temporäre Dateien abzulegen: Get-PSDrive -Name 'Temp' Get-ChildItem -Path 'Temp:\' # ! Für die Adressierung gibt es **absolute** Pfad-Angaben: Get-ChildItem -Path 'C:\' Get-ChildItem -Path 'variable:\' Get-ChildItem -Path 'Cert:\CurrentUser\My' -CodeSigningCert Get-ChildItem -Path 'env:\' Get-ChildItem -Path 'hkcu:\' Get-ChildItem -Path 'SqlServer:\' # ! Für die Adressierung gibt es **relative** Pfad-Angaben: Get-ChildItem -Path '.' # . => Arbeitsverzeichnis Get-ChildItem -Path '..' # .. => Übergeordneter Get-ChildItem -Path '/' # \ oder / => Stammordner Get-ChildItem -Path '~' # ~ => Home-Verzeichnis # ! Arbeitsverzeichnis wechseln: Set-Location -Path 'HKCU:\SOFTWARE' Set-Location -Path 'C:\Windows\System32' # ! Pfad auflösen: Resolve-Path -Path '.\MsInfo32.exe' # ! Pfad testen: Test-Path -Path 'C:\Windows\System32\MsInfo32.exe' Test-Path -Path 'Variable:\PSUICulture' Test-Path -Path 'C:\Window?\System32\MsBlub32.exe' -IsValid # ! Syntax-Prüfung # ! Pfad zerlegen: Split-Path -Path 'C:\Windows\System32\MsInfo32.exe' -Parent Split-Path -Path 'C:\Windows\System32\MsInfo32.exe' -Leaf # ! Pfad zusammenbauen: Join-Path -Path $env:WinDir -ChildPath 'System32' # ! Die PowerShell-Provider-Default-Cmdlets können in allen PowerShell-Drives benutzt werden und benutzen sich identisch. # ! Übersicht aller Default-Cmdlets: Get-Command -Noun 'ChildItem', 'Item', 'ItemProperty', 'ItemPropertyValue', 'Location', 'Path' -Module 'Microsoft.PowerShell.*' # ? Beispiele anhand von New-Item: New-Item -Path 'C:\Temp' -Name 'NeueDatei1.txt' -ItemType 'File' New-Item -Path 'C:\Temp' -Name 'NeueDatei2.txt' -ItemType 'Directory' New-Item -Path 'HKCU:\Software' -Name '_NeuerKey' -ItemType 'Key' New-Item -Path 'variable:\' -Name 'NeueVariable' -Value 'Hallo Köln!' -ItemType 'Variable' ; $NeueVariable # TIPP Natürlich einfacher so: $NeueVariable = 'Hallo Köln!' New-ItemProperty -Path 'HKCU:\SOFTWARE\_NeuerKey' -Name 'Heute' -Value (Get-Date) -PropertyType 'string' # TIPP - Freie Kapazitäten von Festplatten ermitteln: Get-PSDrive -PSProvider 'FileSystem' # TODO QUIZ - https://forms.office.com/Pages/ResponsePage.aspx?id=DQSIkWdsW0yxEjajBLZtrQAAAAAAAAAAAAa__Yp1xwFUME43QlZWRlM1UlpYRk5NTDQyQjRVVFI5US4u <# TODO ÜBUNG 1. Legen Sie unter **HKEY_CURRENT_USER\Software** einen Key **ABC**, mit einer Property **HexWert** und den hexadezimalen Value **8BAA** an. 2. Legen Sie unter **HKEY_CURRENT_USER\Software\ABC** eine Property **ErstelltAm** mit dem Value des aktuellen Datums (Get-Date) an. 3. Lesen Sie das Datum **ErstelltAm** (s. 2.) wieder ein und addieren **10** Monate dazu, um es anschließend erneut der Eigenschaft **ErstelltAm** zuzuweisen. 4. Setzen Sie den Standard-Wert des **ABC**-Key auf den Value **Hallo Köln!**. 5. Löschen Sie den **ABC**-Key wieder und prüfen / stellen Sie sich das dieser Key wirklich nicht mehr existiert. 6. KNIFFLIG: Finden Sie alle Keys unter **HKEY_CURRENT_USER\Software\Microsoft\Windows** und **HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows** die mit **Run** beginnen. TIPPS: *-Item; *-ItemProperty; Get-Date; Get-ChildItem, Get-ItemPropertyValue #> |