Set-GitLabUser.ps1
function Set-GitLabUser { <# .SYNOPSIS Set properties on specified user. .DESCRIPTION The Set-GitlabUser function sets properties on the specified user. returns modified user when -PassThru is specified .EXAMPLE Set-GitLabUser -id 1 -bio 'awesome root acocunt' --------------------------------------------------------------- Sets the bio of user with id 1 to awesome root account .EXAMPLE #> [CmdletBinding()] [Alias()] [OutputType()] Param ( #ID of yhe user [Parameter(HelpMessage = 'User ID', Mandatory = $true)] [Alias('ID')] [int]$UserID, #Email of the user [Parameter(HelpMessage = 'Email for user')] [ValidateScript({ if($_ -match "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$") { $true } else { Throw "$_ is not a valid email address" } })] [string]$Email, #Password of the user [Parameter(HelpMessage = 'password user')] [ValidatePattern('(?# Error: Password Must Contain at least 8 characters).{8,}')] [ValidateScript({ if($_ -match "^.{8,}$") { $true } else { Throw 'Password Must Contain at least 8 characters' } })] [string]$Password, #Username of the user [Parameter(HelpMessage = 'users username')] [string]$UserName, #Name of the user [Parameter(HelpMessage = 'users name')] [string]$Name, #Skype ID of the user [Parameter(HelpMessage = 'users Skype ID', Mandatory = $false)] [string]$Skype, #LinkedIn of the user [Parameter(HelpMessage = 'users LinkedIn ID', Mandatory = $false)] [string]$LinkedIn, #Twitter Accountof the user [Parameter(HelpMessage = 'users Twitter Account', Mandatory = $false)] [string]$Twitter, #Website URL of the user [Parameter(HelpMessage = 'users Website URL', Mandatory = $false)] [string]$WebsiteURL, #Organisation of the user [Parameter(HelpMessage = 'users Organisation', Mandatory = $false)] [string]$Organization, #Number of projects user can create [Parameter(HelpMessage = 'Number of projects user can create', Mandatory = $false)] [int]$ProjectsLimit, #External UID of the user [Parameter(HelpMessage = 'users External UID', Mandatory = $false)] [string]$ExternUID, #external providers name of the user [Parameter(HelpMessage = 'users external provider name', Mandatory = $false)] [string]$Provider, #User's biography [Parameter(HelpMessage = "User's biography", Mandatory = $false)] [ValidateScript({ if($_ -match "^.{0,250}$") { $true } else { Throw 'Bio must contain at most 250 characters' } })] [string]$Bio, #Location of the user [Parameter(HelpMessage = 'users Location', Mandatory = $false)] [String]$Location, #User is admin [Parameter(HelpMessage = 'User is admin', Mandatory = $false)] [Boolean]$Admin, #User can create groups [Parameter(HelpMessage = 'can create groups', Mandatory = $false)] [Boolean]$CanCreateGroup, #Flags the user as external [Parameter(HelpMessage = 'Flags the user as external', Mandatory = $false)] [Boolean]$External, # Existing GitlabConnector Object, can be retrieved with Get-GitlabConnect [Parameter(HelpMessage = 'Specify Existing GitlabConnector', Mandatory = $false, DontShow = $true)] [psobject]$GitlabConnect = (Get-GitLabConnect), # Passthru the created project [Parameter(HelpMessage = 'Passthru the created project', Mandatory = $false)] [switch]$PassThru ) $httpmethod = 'put' $apiurl = "users/$UserID" $parameters = @{} #email - Email if($Email) { $parameters.email = $Email } #password - Password if($Password) { $parameters.password = $Password } #username - Username if($UserName) { $parameters.username = $UserName } #name - Name if($Name) { $parameters.name = $Name } #skype (optional) - Skype ID if($Skype) { $parameters.'skype' = $Skype } #linkedin (optional) - LinkedIn if($LinkedIn) { $parameters.'linkedin' = $LinkedIn } #twitter (optional) - Twitter account if($Twitter) { $parameters.'twitter' = $Twitter } #website_url (optional) - Website URL if($WebsiteURL) { $parameters.'website_url' = $WebsiteURL } #organization (optional) - Organization name if($Organization) { $parameters.'organisation' = $Organization } #projects_limit (optional) - Number of projects user can create if($ProjectsLimit) { $parameters.'projects_limit' = $ProjectsLimit } #extern_uid (optional) - External UID if($ExternUID) { $parameters.'extern_uid' = $ExternUID } #provider (optional) - External provider name if($Provider) { $parameters.'provider' = $Provider } #bio (optional) - User's biography if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'Bio') { $parameters.'bio' = $Bio.ToString() } #location (optional) - User's location if($Location) { $parameters.'location' = $Location } #admin (optional) - User is admin if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'Admin') { if($Admin) { $parameters.admin = 'true' } else { $parameters.admin = 'false' } } #can_create_group (optional) - User can create groups if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'CanCreateGroup') { if($CanCreateGroup) { $parameters.'can_create_group' = 'true' } else { $parameters.'can_create_group' = 'false' } } #external (optional) - Flags the user as external if($PSCmdlet.MyInvocation.BoundParameters.keys -contains 'External') { if($External) { $parameters.'external' = 'true' } else { $parameters.'external' = 'false' } } $modusr = $GitlabConnect.callapi($apiurl,$httpmethod,$parameters) if($PassThru) { return $modusr } } |