diklabumanager.psm1
$global:keys = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43) <# VERBEN: find ... findet einen oder mehrere Objekte nach Namen. '%' ist WildCard get .... findet ein Objekt durch angabe des PK set .... ändert Attribute eines Objektes durch angabe des PK new .... erzeugt ein neuen Eintrag delete . ein Objekt löschen NOMEN pupil ........ Schüler course ....... Klasse company ...... Firma instructor ... Ausbilder coursemember . Kursmitgliedschaft #> $global:auth_token <# .Synopsis Liest die Server, Benutzernamen und Kennworte aus .DESCRIPTION Liest die Server, Benutzernamen und Kennworte aus .EXAMPLE Get-Keystore .EXAMPLE Get-Keystore -file c:\Temp\keys #> function Get-Keystore { [CmdletBinding()] Param ( # Hilfebeschreibung zu Param1 [Parameter(Position=0)] $file=$Global:keystore ) Begin { $logins=@{} if ($file -ne $Global:keystore) { if (-not $global:keystore -and -not $file) { $file = Read-Host "Bitte Keystore file angeben" } if ($global:logins) { $global:logins.Clear() } $global:keystore=$file $file } if (Test-Path $file) { $lf = Get-Content $global:keystore | ConvertFrom-Json $lf.PSObject.Properties | ForEach-Object { $logins[$_.Name]=$_.Value } } $global:logins=$logins; $logins; } } $global:logins=Get-Keystore -file "$env:TEMP\keystore.json" <# .Synopsis Setzte einen Schlüssel bestehend aus Server, Benutzernamen und Kennworte aus .DESCRIPTION Setzte einen Schlüssel bestehend aus Server, Benutzernamen und Kennworte aus .EXAMPLE Set-Keystore -url http://xyz.de -credential $cred -key seafile .EXAMPLE Set-Keystore -file keys.txt -url http://xyz.de -credential $cred -key seafile #> function Set-Keystore { [CmdletBinding()] Param ( # Hilfebeschreibung zu Param1 [Parameter(Position=0)] $file=$global:keystore, [Parameter(Mandatory=$true, Position=1)] $key, [Parameter(Mandatory=$true, Position=2)] $server, [Parameter(Position=3)] [PSCredential]$credential ) Begin { $global:logins=Get-Keystore -file $file $login = "" | Select-Object "location","user","password" $login.location = $server $login.user = $credential.UserName if ($credential.password) { try { $login.password = $credential.Password | ConvertFrom-SecureString -Key $global:keys } catch { $login.password = "" } } $global:logins[$key]=$login $global:logins | ConvertTo-Json -Compress | Set-Content $file $file } } <# .Synopsis Server URL Setzen .DESCRIPTION Setzt global die Server URL .EXAMPLE Set-Diklabuserver -uri http://localhost:8080/Diklabu/api/v1/ #> function Set-Diklabuserver { Param ( # Hilfebeschreibung zu Param1 [Parameter(Mandatory=$true,Position=0)] [String]$uri ) Begin { Set-Keystore -key "diklabu" -server $uri } } <# .Synopsis Abfrage des Diklabuservers .DESCRIPTION Abfrage des Diklabuservers .EXAMPLE Get-Diklabuserver #> function Get-Diklabuserver { Begin { return $global:logins["diklabu"].location } } <# .Synopsis Anmelden am Klassenbuch .DESCRIPTION Anmelden beim Klassenbuch und Sessionkey beziehen .EXAMPLE login-diklabu -credential (get-Credential) .EXAMPLE login-diklabu -credential (get-Credential) -URI http://localhost:8080/Diklabu/api/v1/ #> function Login-Diklabu { Param ( # Benutzername [Parameter(Position=0)] [PSCredential]$credential, # URI des Diklabu Servers [Parameter(Position=1)] [String]$uri ) Begin { $org = [Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} if (-not $uri) { if ($Global:logins["diklabu"]) { $uri=$Global:logins["diklabu"].location; } else { Write-Error "Bitte uri und oder Serveradresse mittels Set-DiklabuServer angeben!" break; } } if (-not $credential) { if (-not $Global:logins["diklabu"].password) { Write-Error "Bitte credentials angeben!" break; } else { $password = $Global:logins["diklabu"].password | ConvertTo-SecureString -Key $global:keys $credential = New-Object System.Management.Automation.PsCredential($Global:logins["diklabu"].user,$password) } } try { $data=echo "" | Select-Object -Property "benutzer","kennwort" $data.benutzer=$credential.userName $data.kennwort=$credential.GetNetworkCredential().Password $headers=@{} $headers["content-Type"]="application/json" #$headers["service_key"]=$user+"f80ebc87-ad5c-4b29-9366-5359768df5a1"; Write-Verbose "Anmelden am Diklabuserver unter $uri" $r=Invoke-RestMethod -Method Post -Uri ($uri+"auth/login") -Headers $headers -Body (ConvertTo-Json $data) $global:auth_token=$r.auth_token $global:server=$uri Set-Keystore -key "diklabu" -server $uri -credential $credential return $r; } catch { Write-Error $_.Exception.Message } [Net.ServicePointManager]::SecurityProtocol=$org } } <# .Synopsis Abfragen der Anmeldedaten .DESCRIPTION Abfragen der Anmeldedaten .EXAMPLE get-diklabu #> function Get-Diklabu { Param ( ) Begin { $Global:logins["diklabu"] } } |