diklabu_moodle.psm1
$global:token <# .Synopsis Anmelden an Moodel .DESCRIPTION Anmelden an Moodel .EXAMPLE login-moodle -url http://localhost/moodle -credentails (get-cretendials admin) #> function Login-Moodle { [CmdletBinding()] Param ( # URL des Moodle Systems [Parameter(Position=0)] [String]$url, # Credentials f. das Moodle Systems [Parameter(Position=1)] [PSCredential]$credential, # Webservice Name [String]$service="diklabu" ) Begin { if (-not $url -or -not $credential) { if ($Global:logins["moodle"]) { $url=$Global:logins["moodle"].location; $password = $Global:logins["moodle"].password | ConvertTo-SecureString $credential = New-Object System.Management.Automation.PsCredential($Global:logins["moodle"].user,$password) } else { Write-Error "Bitte url und credentials angeben!" break; } } [System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null $base=$url $moodle = $url+"webservice/rest/server.php" $data=echo "" | Select-Object -Property "benutzer","kennwort" $data.benutzer=$credential.userName $data.kennwort=$credential.GetNetworkCredential().Password $kw=[System.Web.HttpUtility]::UrlEncode($($data.kennwort)) $url=$url+"login/token.php?username=$($data.benutzer)&service=$service&password=$kw" $r=Invoke-RestMethod -Method GET -Uri $url -ContentType "application/json; charset=iso-8859-1" if ($r) { if ($r.token) { Write-Verbose "Login Moodle erfolgreich" $global:token=$r.token } } Set-Keystore -key "moodle" -server $base -credential $credential $r [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} } } <# .Synopsis Abfragen des Moodle Serv .DESCRIPTION Abfragen des Moodle Serv .EXAMPLE Get-moodle #> function Get-Moodle { [CmdletBinding()] Param ( ) Begin { $Global:logins["moodle"] } } <# .Synopsis Liste der Kurse .DESCRIPTION Liste der Kurse .EXAMPLE Get-MoodleCourses #> function Get-MoodleCourses { [CmdletBinding()] Param ( # Moodle categorie [Parameter(Position=0)] [int]$categorie ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" } else { Write-Verbose "Get-MoodleCourses" if ($categorie) { $postParams = @{wstoken=$token;wsfunction='core_course_get_courses_by_field';moodlewsrestformat='json';field='category';value=$categorie} $courses=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $courses.courses } else { $postParams = @{wstoken=$token;wsfunction='core_course_get_courses';moodlewsrestformat='json'} $courses=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $courses } } } } <# .Synopsis Liste der Kategorien .DESCRIPTION Liste der Kategorien .EXAMPLE Get-MoodleCategories #> function Get-MoodleCategories { [CmdletBinding()] Param ( ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" } else { Write-Verbose "Get-MoodleCategories" $postParams = @{wstoken=$token;wsfunction='core_course_get_categories';moodlewsrestformat='json'} $courses=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $courses } } } <# .Synopsis Liste der gloablen Gruppen .DESCRIPTION Liste der globalen Gruppen .EXAMPLE Get-MoodleCohorts #> function Get-MoodleCohorts { [CmdletBinding()] Param ( ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" } else { Write-Verbose "Get-MoodleCohorts" $postParams = @{wstoken=$token;wsfunction='core_cohort_get_cohorts';moodlewsrestformat='json'} $courses=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $courses } } } <# .Synopsis Fügt einen Benutzer der globalen Gruppe hinzu .DESCRIPTION Fügt einen Benutzer der globalen Gruppe hinzu .EXAMPLE Add-MoodleCohortmember -cohortid 12 -userid 23 Add the User wirh ID 23 to the cohort group id 12 .EXAMPLE 474,473 | Add-MoodleCohortMember -cohortid 9 Adds the users with id 474 and 473 to the cohort with id 9 #> function Add-MoodleCohortMember { [CmdletBinding()] Param ( # Cohort ID [Parameter(Mandatory=$true, Position=0)] [int]$cohortid, # ID der Benutzers [Parameter(Mandatory=$true, ValueFromPipeLine=$true, Position=1)] [int]$userid, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_cohort_add_cohort_members';moodlewsrestformat='json'} } $n=0 } Process { if (!$force) { $q=Read-Host "Soll der Benutzer mit der ID $userid in die globale Gruppe mit der ID $cohortid aufgenommen werden? (J/N)" if ($q -eq "J") { Write-Verbose "Benutzer mit ID $userid wird in globale Gruppe mit ID $cohortid aufgenommen" $postParams['members['+$n+'][cohorttype][type]']="id" $postParams['members['+$n+'][cohorttype][value]']=$cohortid $postParams['members['+$n+'][usertype][type]']="id" $postParams['members['+$n+'][usertype][value]']=$userid $n++; } } else { Write-Verbose "Benutzer mit ID $userid wird in globale Gruppe mit ID $cohortid aufgenommen" $postParams['members['+$n+'][cohorttype][type]']="id" $postParams['members['+$n+'][cohorttype][value]']=$cohortid $postParams['members['+$n+'][usertype][type]']="id" $postParams['members['+$n+'][usertype][value]']=$userid $n++; } } End { if (!$whatif) { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" if ($r.warnings) { foreach ($w in $r.warnings) { Write-Warning $w.message } } } } } <# .Synopsis Synchonisiert die Moodle Benutzer mit der globalen Gruppe. .DESCRIPTION Synchronisiert die Moodle Benutzer mit der globalen Gruppe, d.h. Wenn Benutzer bereits in der Gruppe ist wird nichts unternommen. Ist der Benutzer nicht in der globalen Gruppe, wird er eingetragen. Benutzer die in der globalen Gruppe sind, jedoch nicht hinzugefügt wurden, werden gelöscht. .EXAMPLE Sync-MoodleCohortmember -cohortid 12 -userids 23,24,25 Die globale Gruppe mit der ID 12 enthält die Benutzer mit den IDs 23,24,25 .EXAMPLE 474,473 | Sync-MoodleCohortMember -cohortid 9 Die globale Gruppe mit der ID 9 enthält die Benutzer mit den IDs 474,473 #> function Sync-MoodleCohortMember { [CmdletBinding()] Param ( # Cohort ID [Parameter(Mandatory=$true, Position=0)] [int]$cohortid, # ID der Benutzers [Parameter(Mandatory=$true, ValueFromPipeLine=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [alias(“id”)] [int[]]$userids, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_cohort_add_cohort_members';moodlewsrestformat='json'} } $n=0 $iMember = Get-MoodleCohortMember -cohortid $cohortid if ([bool]($iMember.PSobject.Properties.name -match "message")) { Write-Error $iMember.message; break; } else { $istMember = @{}; foreach ($m in $iMember.userids) { $istMember["$m"]=$m } } } Process { $userids | ForEach-Object { Write-Verbose "Bearbeite Nutzer mit ID=$userid" $userid = $_ if ($istMember["$userid"]) { Write-Verbose "Der Benutzer mit der ID $userid befindet sich bereits in der gloablen Gruppe mit der ID $cohortid" $istMember.Remove("$userid") } else { if (!$force) { $q=Read-Host "Soll der Benutzer mit der ID $userid in die globale Gruppe mit der ID $cohortid aufgenommen werden? (J/N)" if ($q -eq "J") { Write-Verbose "Benutzer mit ID $userid wird in globale Gruppe mit ID $cohortid aufgenommen" $postParams['members['+$n+'][cohorttype][type]']="id" $postParams['members['+$n+'][cohorttype][value]']=$cohortid $postParams['members['+$n+'][usertype][type]']="id" $postParams['members['+$n+'][usertype][value]']=$userid $n++; } } else { Write-Verbose "Benutzer mit ID $userid wird in globale Gruppe mit ID $cohortid aufgenommen" $postParams['members['+$n+'][cohorttype][type]']="id" $postParams['members['+$n+'][cohorttype][value]']=$cohortid $postParams['members['+$n+'][usertype][type]']="id" $postParams['members['+$n+'][usertype][value]']=$userid $n++; } } } } End { if (!$whatif) { if ($n -ne 0) { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" if ($r.warnings) { foreach ($w in $r.warnings) { Write-Warning "Sync-MoodleCohortMember: $($w.message)" } } } if ($istMember.Count -ne 0) { if ($force) { $istMember.Values | Remove-MoodleCohortMember -cohortid $cohortid -force } else { $istMember.Values | Remove-MoodleCohortMember -cohortid $cohortid } } } } } <# .Synopsis Löscht einen Benutzer aus einer globalen Gruppe .DESCRIPTION Löscht einen Benutzer aus einer globalen Gruppe .EXAMPLE Remove-MoodleCohortmember -cohortid 12 -userid 23 Removes the User wirh ID 23 from the cohort group id 12 .EXAMPLE 474,473 | Remove-MoodleCohortMember -cohortid 9 Removes the users with id 474 and 473 from the cohort with id 9 #> function Remove-MoodleCohortMember { [CmdletBinding()] Param ( # Cohort ID [Parameter(Mandatory=$true, Position=0)] [int]$cohortid, # ID der Benutzers [Parameter(Mandatory=$true, ValueFromPipeLine=$true, Position=1)] [int]$userid, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_cohort_delete_cohort_members';moodlewsrestformat='json'} } $n=0 } Process { if (!$force) { $q=Read-Host "Soll der Benutzer mit der ID $userid aus der globale Gruppe mit der ID $cohortid entfernt werden? (J/N)" if ($q -eq "J") { Write-Verbose "Benutzer mit ID $userid wird aus der globalen Gruppe mit ID $cohortid entfernt" $postParams['members['+$n+'][cohortid]']=$cohortid $postParams['members['+$n+'][userid]']=$userid $n++; } } else { Write-Verbose "Benutzer mit ID $userid wird aus der globale Gruppe mit ID $cohortid entfernt" $postParams['members['+$n+'][cohortid]']=$cohortid $postParams['members['+$n+'][userid]']=$userid $n++; } } End { if (!$whatif) { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" if ($r -ne "null") { foreach ($w in $r) { Write-Warning $w.message } } } } } <# .Synopsis Liste der Mitglieder einer Kurses .DESCRIPTION Liste der Mitglieder einer Kurses .EXAMPLE Get-MoodleCoursemember -id 3 Listet die Mitgleider des Kurses mit der ID 3 .EXAMPLE 2,3,5 | Get-MoodleCoursemember Listet die Mitgleider der Kurses mit den IDs 2,3,5 #> function Get-MoodleCoursemember { [CmdletBinding()] Param ( # Kurs ID [Parameter(Mandatory=$true, ValueFromPipeLine=$true, Position=0)] [int]$id ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_enrol_get_enrolled_users';moodlewsrestformat='json'} } } Process { Write-Verbose "Get-MoodleCourseMember IDCourse=$id" $postParams["courseid"]=$id $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $r } } <# .Synopsis Einen Moodle Teilnehmer abfragen .DESCRIPTION Einen Moodle Teilnehmer abfragen .EXAMPLE Get-MoodleUser -property "jtuttas@gmx.net" -PROPERTYTYPE EMAIL Sucht den Benutzer mit der email jtuttas@gmx.net .EXAMPLE Get-MoodleUser -property admin -PROPERTYTYPE USERNAME Sucht den Benutzer mit dem Anmeldenamen admin .EXAMPLE "jtuttas@gmx.net","test@home.de" | Get-MoodleUser-PROPERTYTYPE EMAIL Sucht den Benutzer mit dem Anmeldenamen admin #> function Get-MoodleUser { [CmdletBinding()] Param ( # EMail des Benutzers [Parameter(Mandatory=$true, ValueFromPipeLine=$true, Position=0)] $property, [Parameter(Mandatory=$true, Position=1)] [ValidateSet('EMAIL','USERNAME',"ID","IDNUMBER")] [String]$PROPERTYTYPE ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_user_get_users_by_field';moodlewsrestformat='json'} } $n=0; } Process { if ($PROPERTYTYPE -eq "EMAIL") { $postParams['field']='email' $postParams['values['+$n+']']=$property $n++; } elseif ($PROPERTYTYPE -eq "USERNAME") { $postParams['field']='username' $postParams['values['+$n+']']=$property $n++; } elseif ($PROPERTYTYPE -eq "ID") { $postParams['field']='id' $postParams['values['+$n+']']=$property $n++; } elseif ($PROPERTYTYPE -eq "IDNUMBER") { $postParams['field']='idnumber' $postParams['values['+$n+']']=$property $n++; } Write-Verbose "Get-MoodleUser property=$property" } End { if ($property -ne $null) { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Receive ($r)" $r } } } <# .Synopsis Einen Moodle Teilnehmer neue Attribute zuweisen .DESCRIPTION Einen Moodle Teilnehmer neue Attribute zuweisen .EXAMPLE Set-MoodleUser -moodleid 1234 -username tuttas #> function Set-MoodleUser { [CmdletBinding()] Param ( # Moodle ID des Benutzers [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [Alias("id")] [int]$moodleid, # username des Benutzers [Parameter(Position=1, ValueFromPipelineByPropertyName=$true )] [String]$username, # email des Benutzers [Parameter(Position=0, ValueFromPipelineByPropertyName=$true )] [String]$email ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_user_update_users';moodlewsrestformat='json'} } $postParams['users[0][username]']=$username $postParams['users[0][id]']=$moodleid $postParams['users[0][email]']= $email #$postParams $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Set-MoodleUser moodleID=$moodleid username=$username" #$r } } <# .Synopsis Neuen Moodle Kurs anlegen .DESCRIPTION Neuen Moodle Kurs anlegen .EXAMPLE New-MoodleCourse -fullname "Mein neuer Kurs" -shortname "kn2" -categoryid 4 Legt einen neuen Kurs in der Kategorie 4 an #> function New-MoodleCourse { [CmdletBinding()] Param ( # Name des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [String]$fullname, # Kurzname des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [String]$shortname, # Kategorie, wo der Kurs erscheinen soll [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=2)] [int]$categoryid, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_course_create_courses';moodlewsrestformat='json'} } $n=0 } Process { Write-Verbose "New Moodle Course fullname=$fullname shortname=$shortname categoryId=$categoryid" $postParams['courses['+$n+'][fullname]']=$fullname $postParams['courses['+$n+'][shortname]']=$shortname $postParams['courses['+$n+'][categoryid]']=$categoryid $n++ } End { if (-not $whatif) { if (-not $force) { $q=Read-Host "Soll der Kurs '$fullname' ($shortname) in der Kategorie ID=$categoryid angelegt werden? (J/N)" if ($q -ne "J") { return; } } $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Kurs '$fullname' ($shortname) wurde in der Kategorie mit der ID $categoryid angelegt" $r } } } <# .Synopsis Neue gloable Gruppe anlegen .DESCRIPTION Neue gloable Gruppe anlegen .EXAMPLE New-MoodleCohort -name "ttest" -idnumber "t2" -description "Ein Test" Legt neue globale Gruppe in Moodle an, mit dem Namen "ttest" und der globalen Gruppen id t2 #> function New-MoodleCohort { [CmdletBinding()] Param ( # Name des Cohorts [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [String]$name, # cohort idnumber [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [String]$idnumber, # Beschreibung des Cohorts [Parameter(ValueFromPipelineByPropertyName=$true, Position=2)] [String]$description, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_cohort_create_cohorts';moodlewsrestformat='json'} } $n=0 } Process { if (-not $force) { $q = Read-Host ("Soll die gloable Gruppe mit dem Namen $name angelegt werden? (J/N)") if ($q -eq "J") { Write-Verbose "New Moodle Course fullname=$fullname shortname=$shortname categoryId=$categoryid" $postParams['cohorts['+$n+'][categorytype][type]']="system" $postParams['cohorts['+$n+'][categorytype][value]']="0" $postParams['cohorts['+$n+'][name]']=$name $postParams['cohorts['+$n+'][idnumber]']=$idnumber $postParams['cohorts['+$n+'][description]']=$description $postParams['cohorts['+$n+'][descriptionformat]']=1 $postParams['cohorts['+$n+'][visible]']=1 $n++ } } else { Write-Verbose "New Moodle Course fullname=$fullname shortname=$shortname categoryId=$categoryid" $postParams['cohorts['+$n+'][categorytype][type]']="system" $postParams['cohorts['+$n+'][categorytype][value]']="0" $postParams['cohorts['+$n+'][name]']=$name $postParams['cohorts['+$n+'][idnumber]']=$idnumber $postParams['cohorts['+$n+'][description]']=$description $postParams['cohorts['+$n+'][descriptionformat]']=1 $postParams['cohorts['+$n+'][visible]']=1 $n++ } } End { if (-not $whatif) { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" if ([bool]($r.PSobject.Properties.name -match "message")) { foreach ($w in $r) { Write-Warning "$($w.message) $($r.debuginfo)" } } else { $r } } } } <# .Synopsis Copy Moodle Kurs anlegen .DESCRIPTION Copy Moodle Kurs anlegen .EXAMPLE Copy-MoodleCourse -fullname "Mein neuer Kurs" -shortname "kn2" -categoryid 4 -courseid 2 Kopiert den Kurs mit der Kurs id 2 als neuen Kurs in der Kategorie 4 an #> function Copy-MoodleCourse { [CmdletBinding()] Param ( # Name des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [String]$fullname, # Kurzname des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [String]$shortname, # Kategorie, wo der Kurs erscheinen soll [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=2)] [int]$categoryid, # ID des Kurses der kopiert werden soll [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=3)] [int]$courseid, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_course_duplicate_course';moodlewsrestformat='json'} } $n=0 } Process { Write-Verbose "New Moodle Course fullname=$fullname shortname=$shortname categoryId=$categoryid" $postParams['fullname']=$fullname $postParams['shortname']=$shortname $postParams['categoryid']=$categoryid $postParams['courseid']=$courseid if (-not $whatif) { if (-not $force) { $q=Read-Host "Soll der Kurs '$fullname' ($shortname) in der Kategorie ID=$categoryid als Kopie des Kurses mit der ID $courseid erstellt werden? (J/N)" if ($q -ne "J") { return; } } $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Kurs '$fullname' ($shortname) wurde in der Kategorie mit der ID $categoryid als Kopie des Kurses mit der ID $courseid angelegt!" $r } } End { } } <# .Synopsis Löscht einen oder mehrere Kurse .DESCRIPTION Löscht einen oder mehrere Kurse .EXAMPLE Delete-MoodleCourse -id 12 Löscht den Kurs mit der ID 12 #> function Delete-MoodleCourse { [CmdletBinding()] Param ( # Name des Kurses [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] [int]$id, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_course_delete_courses';moodlewsrestformat='json'} } $n=0 } Process { $postParams['courseids['+$n+']']=$id $n++ if (-not $whatif) { Write-Verbose "Delete-MoodleCourse ID=$id" } else { Write-Verbose "Würde den Kurs mit der ID=$id löschen!" } } End { if (-not $whatif) { if (-not $force) { $q=Read-Host "Sollen die Kurse wirklich gelöscht werden? (J/N)" if ($q -ne "J") { return; } } $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Kurse gelöscht" $r } } } <# .Synopsis Benutzer einem Kurs hinzufügen .DESCRIPTION Benutzer einem Kurs hinzufügen .EXAMPLE Add-MoodleCourseMember -courseid 41 -userid 47 -role STUDENT Fügt den Benutzer mit der ID 47 den Kurs mit der ID 41 hinzu als Stundent .EXAMPLE 1,2,3 | Add-MoodleCourseMember -courseid 41 -role STUDENT Fügt die Benutzer mit den IDs 1,2,3 den Kurs mit der ID 41 hinzu als Student #> function Add-MoodleCourseMember { [CmdletBinding()] Param ( # ID des Users [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, Position=0)] [int]$userid, # ID des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [int]$courseid, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=2)] [ValidateSet('STUDENT','TEACHER')] [String]$role, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='enrol_manual_enrol_users';moodlewsrestformat='json'} } $n=0 } Process { $postParams['enrolments['+$n+'][userid]']=$userid $postParams['enrolments['+$n+'][courseid]']=$courseid if ($role -eq "STUDENT") { $postParams['enrolments['+$n+'][roleid]']=5 Write-Verbose "Add-MoodleCourseMember userid=$userid courseId=$courseid Role=STUDENT" } elseif($role -eq "TEACHER") { $postParams['enrolments['+$n+'][roleid]']=3 Write-Verbose "Add-MoodleCourseMember userid=$userid courseId=$courseid Role=TEACHER" } $n++ } End { if (-not $whatif) { if (-not $force) { $q=Read-Host "Benutzer mit Teilnehmen ID=$userid in den Kurs mit ID=$courseid einschreiben? (J/N)" if ($q -ne "J") { return; } } $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Benutzer mit ID=$userid in den Kurs ID=$courseid eingeschrieben" $r } } } <# .Synopsis Benutzer aus einem Kurs entfernen .DESCRIPTION Benutzer aus einem Kurs entfernen .EXAMPLE Remove-MoodleCourseMember -courseid 41 -userid 47 Entfernt den Benutzer mit der ID 47 aus den Kurs mit der ID 41 .EXAMPLE 1,2,3 | Add-MoodleCourseMember -courseid 41 Entfernt die Benutzer mit den IDs 1,2,3 aus den Kurs mit der ID 41 #> function Remove-MoodleCourseMember { [CmdletBinding()] Param ( # ID des Users [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, Position=0)] [int]$userid, # ID des Kurses [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] [int]$courseid, [switch]$force, [switch]$whatif ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='enrol_manual_unenrol_users';moodlewsrestformat='json'} } $n=0 } Process { Write-Verbose "Remove-MoodleCourseMember userid=$userid courseId=$courseid" $postParams['enrolments['+$n+'][userid]']=$userid $postParams['enrolments['+$n+'][courseid]']=$courseid $n++ } End { if (-not $whatif) { if (-not $force) { $q=Read-Host "Benutzer mit Teilnehmen ID=$userid aus dem Kurs mit ID=$courseid entfernen? (J/N)" if ($q -ne "J") { return; } } $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" Write-Verbose "Benutzer mit ID=$userid aus dem Kurs ID=$courseid entfernt" $r } } } <# .Synopsis Benutzer einer globalen Gruppe abfragen .DESCRIPTION Benutzer einer globalen Gruppe abfragen .EXAMPLE Get-MoodleCohortMember -cohortid 5 Fragt die Mitglieder der Globalen Gruppe mit der ID 5 ab .EXAMPLE 1,3,5 | Get-MoodleCohortMember Fragt die Mitglieder der Globalen Gruppe mit den IDs 1,3,5 ab #> function Get-MoodleCohortMember { [CmdletBinding()] Param ( # ID der globalen Gruppe [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true, Position=0)] [int]$cohortid ) Begin { if (-not $global:token) { write-Error "Sie sind nicht angemeldet, probieren Sie login-moodle!" break; } else { $postParams = @{wstoken=$token;wsfunction='core_cohort_get_cohort_members';moodlewsrestformat='json'} } $n=0 } Process { Write-Verbose "Get-MoodleCohortMember cohortId=$cohortid" $postParams['cohortids['+$n+']']= $cohortid $n++ } End { $r=Invoke-RestMethod -Method POST -Uri "$($Global:logins["moodle"].location)webservice/rest/server.php" -Body $postParams -ContentType "application/x-www-form-urlencoded" $r } } |