Tobias Simetsreiter 3 gadi atpakaļ
vecāks
revīzija
438fca4048
1 mainītis faili ar 36 papildinājumiem un 14 dzēšanām
  1. 36 14
      gitlab/groupusers.ps1

+ 36 - 14
gitlab/groupusers.ps1

@@ -10,7 +10,7 @@
 # This Script takes emails from pipe and group and access level from cli to invite them
 $GITLAB_INVITE = "$PSScriptRoot\gitlab-invite.ps1"
 
-Set-Log ([IO.Path]::GetFullPath("$PSScriptRoot\..\runtime\groupusers-${env:computername}-.log")) 1mb 2
+Set-Log ([IO.Path]::GetFullPath("$PSScriptRoot\..\runtime\groupusers-${env:computername}.log")) 1mb 2
 
 
 foreach ($module in @("ActiveDirectory")){
@@ -25,27 +25,49 @@ foreach ($module in @("ActiveDirectory")){
 $departments = @(
     @{
         name="ANNAX CH Testing and Integration"
-        id="3160"
-        glgroup="annax/teams/integrationtest"
-        access_level="20"
+        id=3160
+        glgroup=@{
+            name="annax/teams/integrationtest";
+            access_level="20";
+        }
     },
     @{
         name="ANNAX DE Device Software Engineering"
-        id="3130"
-        glgroup="annax/teams/developers"
-        access_level="30"
+        id=3130
+        glgroup=@{
+            name="annax/teams/developers";
+            access_level="30";
+        }
     }
 )
 
-&{
+function Main(){
+
     $departments | ForEach-Object {
-    $filter = "*("+$_.id+")"
-    $_.name
-    $_.glgroup
-    Get-ADUser -Filter {Department -like $filter} -Properties emailaddress,Department |
-        Select-Object -ExpandProperty emailaddress | &$GITLAB_INVITE -group $_.glgroup -access_level $_.access_level
+        $filter = "*($([string]$_.id))"
+        $department = $_;
+        
+        if ($null -ne $department.glgroup){
+            "Inviting '$($department.name)' with id $($department.id) to '$($department.glgroup.name)'"
+            Get-ADUser -Filter {Department -like $filter} -Properties emailaddress,Department |
+                ForEach-Object {
+                    @{glgroup=$department.glgroup;aduser=$_} | GitlabInvite;
+                }
+        }
     }
-} *| Foreach-Object {
+}
+
+function GitlabInvite(){
+    param(
+        [Parameter(Mandatory=$true,ValueFromPipeline = $true)]
+        $user
+    )
+    $user.aduser |
+        Select-Object -ExpandProperty emailaddress |
+        &$GITLAB_INVITE -group $user.glgroup.name -access_level $user.glgroup.access_level
+}
+
+Main *| Foreach-Object {
     Write-Log ([string]$_)
 }