Im Laufe der Zeit haben sich einige Skripte, meist zu Testzwecken angesammelt, die aber durchaus nützlich sein können. An dieser Stelle eine veröffentlichung meiner Snipets. Dieser Beitrag kann später noch ergänzt werden.
Mit einem SecureString kann in Powershell ein verschlüsselter String erzeigt werden. Dieser kann beispielsweise im Dateisystem mit einem Passwort abgelegt werden, um ein gesicherte "RunAs" funktionalität bei einem Invoke-Command zu ermöglichen
$key = (0, 0, 2, 3, 5, 3, 3, 3, 2, 3, 2, 4, 3, 1, 3, 3); $pass = "Password" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString -Key $key # #$pass = "NAB5AHMAZQBLAHAASgA1AE4AZwBoACsAKwA2AFkAaQB0AFUANABzAHcAPQA9AHwAZAAwADEANgBmAGYAMAAxADEANABiAGMAYwA0ADYAYwBiADIANwBhAGUAOAA0ADQAZgBiADEAMgA5ADIAMwA4ADQANABjAGQANwAwADgANAAzAGMAZgBhADYANwBhADEA" $env = $pass | ConvertTo-SecureString -Key $key $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($env) $PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) Write-Host "Password is: " $PlainPassword
Hier ein kleines Beispiel zur Bearbeitung der ACL Access Control List im WIndows Dateisystem mit Powershell
# Andreas Nick 2015 $Folder = "c:\temp" [System.Reflection.Assembly]::LoadWithPartialName("System.Security.Principal") | Out-Null $List = get-acl $Folder $List.Access | ForEach-Object { [System.Security.AccessControl.FileSystemAccessRule] $r = $_; $r.AccessControlType; $AdObj = New-Object System.Security.Principal.NTAccount -ArgumentList $_.IdentityReference Write-Host "#######" $strSID = $AdObj.Translate([System.Security.Principal.SecurityIdentifier]) Write-Host "Group :" $_.IdentityReference " SID:" $strSID.Value } $CurrentRightsTable = (get-acl $Folder).GetAccessRules($true, $true, [System.Security.Principal.NTAccount]) $users = @((get-acl "C:\users\Andreas").Access | Select-Object -ExpandProperty IdentityReference ) | where { $_ -notmatch "Vordefiniert" } $users
Der folgede Codeschnipsel ist eine echte Spielerei und füllt die Powershell Konsole mit zufälligen Nullen und Einsen
$r = new-object System.Random for ($x = 0; $x -le 100; $x++) { [Sring] $line = "" for ($y = 0; $y -le 200; $y++) { $line += $r.Next(0, 2).ToString() } Write-Host $line }
Das schaut dann wie folgt aus: