Private/Wissen/B08_PSProvider.ps1
# ? TITEL PSProvider & PSDrive # ? DESCRIPTION Mit Default-Cmdlets auf div. Subsystem zugreifen # ? TAGS PSProvider PSDrive Registry # ? VERSION 2020.01.08 # ! Mit einem PowerShell-Provider werden div. Technologien # ! mit Default-Cmdlets benutzbar gemacht # Typische PS 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 # * ????? => [OPTIONAL] Exchange-Postfächer/-Ordner # * SqlServer => [OPTIONAL] Microsoft SQL-Server # * u.v.m. # TODO 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 PS-Provider aktiviert werden Get-PSProvider Import-Module -Name SqlServer Get-PSProvider # ! Für die Interaktion mit den PS-Providern gibt es Laufwerke (PSDrive) # ! um auf die Inhalte per Pfad 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\Raum3 New-PSDrive -PSProvider Registry -Name HKCC -Root HKEY_CURRENT_CONFIG # ? Absolute Pfad-Angaben Get-ChildItem -Path c:\ Get-ChildItem -Path variable:\ # $PsUiCulture Get-ChildItem -Path cert:\ Get-ChildItem -Path env:\ # $env:WinDir Get-ChildItem -Path hkcu:\ Get-ChildItem -Path SqlServer:\ # ? Relative Pfad-Angaben Get-ChildItem -Path . # . => Arbeitsverzeichnis Get-ChildItem -Path .. # .. => Übergeordneter Get-ChildItem -Path / # \ => Stammordner oder / 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 # Nur Syntax-Prüfung mit: -IsValid Test-Path -Path Variable:\PSUICulture # ? 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 PSProvider-Default-Cmdlets können in allen Laufwerken benutzt werden # ! und verhalten sich identisch. # ? Übersicht aller Default-Cmdlets Get-Command -Noun ChildItem, Item, ItemProperty, ItemPropertyValue, Location, Path -Module Microsoft.PowerShell.* New-Item -Path C:\Temp -Name NeueDatei.txt -ItemType File New-Item -Path HKCU:\Software -Name NeuerKey -ItemType Key New-Item -Path variable:\ -Name NeueVariable -Value "Hallo Köln!" -ItemType Variable # ! $NeueVariable = "Hallo Köln!" ; New-Variable -Name NeueVariable -Value "Hallo Köln!" -Option ReadOnly New-ItemProperty -Path HKCU:\SOFTWARE\NeuerKey -Name Heute -Value (Get-Date) -PropertyType #region Übungen <# TODO Übung 1 (PSProvider & PSDrive) ? A) Legen Sie unter 'HKEY_CURRENT_USER\Software' einen Schlüssel 'ABC', mit einer Eigenschaft 'HexWert' und dem hexadezimalen Wert '8BAA' an. ? B) Legen Sie unter 'HKEY_CURRENT_USER\Software\ABC' eine Property 'ErstelltAm' mit dem Value des 'aktuellen Datums' an. ? C) Lesen Sie das o.a. Datum 'ErstelltAm' wieder ein und addieren '10' Monate dazu, um es erneut der Eigenschaft 'ErstelltAm' zuzuweisen. ? D) Setzen Sie den Standard-Wert des 'ABC'-Key auf den Value 'Hallo Köln!'. ? F) Löschen Sie den 'ABC'-Key wieder und Prüfen / stellen sich das dieser wirklich nicht mehr existiert. ? G) KNIFFLIG: Finden Sie alle Schlüssel die mit 'Run' beginnen unter 'HKEY_CURRENT_USER\Software\Microsoft\Windows' bzw. 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows'. ! TIPPS New-Item; New-ItemProperty; Get-Date; Get-Help; about_Assignment_Operators; Get-ChildItem; Where-Object * MUSTERLÖSUNG #> #endregion |