public/api/Edit-MBSAPIUser.ps1
function Edit-MBSAPIUser { <# .SYNOPSIS Updates user properties to new values. .DESCRIPTION Calls POST request to https://api.mspbackups.com/api/Users. .PARAMETER ID MBS Backup user ID. .PARAMETER Email MBS Backup user login name. .PARAMETER FirstName Backup user first name. .PARAMETER LastName Backup user last name. .PARAMETER NotificationEmail Backup user notification emails. .PARAMETER Company Company name. .PARAMETER Enabled Backup user status. Specify $false or $true. .PARAMETER Password Backup user password. .PARAMETER LicenseManagementMode Licensing mode. Get more https://mspbackups.com/Admin/Help/mbs-api-specification/methods/post-apiusers/usermodetype .PARAMETER ProfileName Profile name used with MSP360 PowerShell for MBS API (set via Set-MBSApiCredential) .EXAMPLE Edit-MBSAPIUser -id 7c7044bb-313b-4b1b-900e-76d652246f4d -FirstName "NewFirstName" -LastName "NewLastName" -NotificationEmail NewEmail@contoso.com -Enabled $true -Password (ConvertTo-SecureString -Force -asplaintext 'NewPassword') -LicenseManagementMode 1 -ProfileName MyProfile Update user properties, with specific ID, to new values. .INPUTS System.Management.Automation.PSCustomObject .OUTPUTS String .NOTES Author: Alex Volkov .LINK #> [CmdletBinding()] param ( [Parameter(Mandatory=$true, HelpMessage="ID", ValueFromPipelineByPropertyName)] [string]$ID, [Parameter(Mandatory=$false, HelpMessage="Email")] [string]$Email, [Parameter(Mandatory=$false, HelpMessage="FirstName")] [string]$FirstName, [Parameter(Mandatory=$false, HelpMessage="LastName")] [string]$LastName, [Parameter(Mandatory=$false, HelpMessage="NotificationEmail")] [string[]]$NotificationEmail, [Parameter(Mandatory=$false, HelpMessage="Company")] [string]$Company, [Parameter(Mandatory=$true, HelpMessage="Enabled")] [bool]$Enabled = $true, [Parameter(Mandatory=$false, HelpMessage="Password")] [Securestring]$Password, [Parameter(Mandatory=$false, HelpMessage="LicenseManagementMode")] [string]$LicenseManagementMode, # [Parameter(Mandatory=$false, HelpMessage="The profile name, which must be unique.")] [string] $ProfileName ) begin { $headers = Get-MBSAPIHeader -ProfileName $ProfileName } process { $UsersPut = @{ ID = $ID Email = $Email.Trim() FirstName = $FirstName LastName = $LastName NotificationEmails = $NotificationEmail Company = $Company.Trim() Enabled = $Enabled LicenseManagmentMode = $LicenseManagementMode } if (-not $Company){ $UsersPut.Remove("Company") } if ($Password) { $UsersPut.Add("Password", [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password))) } Write-Verbose -Message ("$($PSCmdlet.MyInvocation.MyCommand.Name): URL: " + (Get-MBSApiUrl).Users) Write-Verbose -Message ("$($PSCmdlet.MyInvocation.MyCommand.Name): PUT Request: " + ($UsersPut|ConvertTo-Json)) $UserID = Invoke-RestMethod -Uri (Get-MBSApiUrl).Users -Method PUT -Headers $headers -Body ($UsersPut|ConvertTo-Json) -ContentType 'application/json' return $UserID } end { } } |