-
Notifications
You must be signed in to change notification settings - Fork 87
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #452 from rubrikinc/mwpreston-244
Issue 244 - cmdlets to manage user accounts
- Loading branch information
Showing
11 changed files
with
652 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
#requires -Version 3 | ||
function Get-RubrikUser | ||
{ | ||
<# | ||
.SYNOPSIS | ||
Gets settings of a Rubrik user | ||
.DESCRIPTION | ||
The Get-RubrikUser cmdlet is used to query the Rubrik cluster to retrieve a list of settings around a Rubrik user account. | ||
.NOTES | ||
Written by Mike Preston for community usage | ||
Twitter: @mwpreston | ||
GitHub: mwpreston | ||
.LINK | ||
http://rubrikinc.github.io/rubrik-sdk-for-powershell/reference/Get-RubrikUser.html | ||
.EXAMPLE | ||
Get-RubrikUser | ||
This will return settings of all of the user accounts (local and LDAP) configured within the Rubrik cluster. | ||
.EXAMPLE | ||
Get-RubrikUser -authDomainId 'local' | ||
This will return settings of all of the user accounts belonging to the local authoriation domain. | ||
.EXAMPLE | ||
Get-RubrikUser -username 'john.doe' | ||
This will return settings for the user account with the username of john.doe configured within the Rubrik cluster. | ||
.EXAMPLE | ||
Get-RubrikUser -authDomainId '1111-222-333' | ||
This will return settings of all of the user accounts belonging to the specified authoriation domain. | ||
.EXAMPLE | ||
Get-RubrikUser -id '1111-22222-33333-4444-5555' | ||
This will return detailed information about the user with the specified ID. | ||
#> | ||
|
||
[CmdletBinding()] | ||
Param( | ||
# Username to filter on | ||
[Parameter(ParameterSetName='Query')] | ||
[String] $Username, | ||
# AuthDomainId to filter on | ||
[Parameter(ParameterSetName='Query')] | ||
[Alias('auth_domain_id')] | ||
[String]$AuthDomainId, | ||
# User ID | ||
[Parameter(ParameterSetName='ID',Mandatory = $true,ValueFromPipelineByPropertyName = $true)] | ||
[String]$Id, | ||
# Rubrik server IP or FQDN | ||
[Parameter(ParameterSetName='Query')] | ||
[Parameter(ParameterSetName='ID')] | ||
[String]$Server = $global:RubrikConnection.server, | ||
# API version | ||
[Parameter(ParameterSetName='Query')] | ||
[Parameter(ParameterSetName='ID')] | ||
[String]$api = $global:RubrikConnection.api | ||
) | ||
|
||
Begin { | ||
|
||
# The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose | ||
# If a command needs to be run with each iteration or pipeline input, place it in the Process section | ||
|
||
# Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication | ||
Test-RubrikConnection | ||
|
||
# API data references the name of the function | ||
# For convenience, that name is saved here to $function | ||
$function = $MyInvocation.MyCommand.Name | ||
|
||
# Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint | ||
Write-Verbose -Message "Gather API Data for $function" | ||
$resources = Get-RubrikAPIData -endpoint $function | ||
Write-Verbose -Message "Load API data for $($resources.Function)" | ||
Write-Verbose -Message "Description: $($resources.Description)" | ||
|
||
} | ||
|
||
Process { | ||
|
||
# If local is passed for auth domain, get the local auth domain ID. | ||
if ($AuthDomainId -eq 'local') { | ||
$AuthDomainId = (Get-RubrikLDAP | Where-Object {$_.domainType -eq 'LOCAL'}).id | ||
} | ||
$uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id | ||
$uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri | ||
$body = New-BodyString -bodykeys ($resources.Body.Keys) -parameters ((Get-Command $function).Parameters.Values) | ||
$result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body | ||
$result = Test-ReturnFormat -api $api -result $result -location $resources.Result | ||
$result = Test-FilterObject -filter ($resources.Filter) -result $result | ||
|
||
return $result | ||
} # End of process | ||
} # End of function |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
#requires -Version 3 | ||
function New-RubrikUser | ||
{ | ||
<# | ||
.SYNOPSIS | ||
Creates a new user | ||
.DESCRIPTION | ||
The New-RubrikUser cmdlet is used to create a new user within the Rubrik cluster. | ||
NOTE: The underlying API endpoints used by this cmdlet are restricted. API token authentication cannot be used with this cmdlet. You must use username/password authentication. | ||
.NOTES | ||
Written by Mike Preston for community usage | ||
Twitter: @mwpreston | ||
GitHub: mwpreston | ||
.LINK | ||
http://rubrikinc.github.io/rubrik-sdk-for-powershell/reference/New-RubrikUser.html | ||
.EXAMPLE | ||
New-RubrikUser -Username 'jdoe' -password (ConvertTo-SecureString -String 'secretpassword123!secret' -asplaintext -force) | ||
This will create a new user with a username of jdoe and the specified password | ||
.EXAMPLE | ||
New-RubrikUser -Username 'jdoe' -password (ConvertTo-SecureString -String 'secretpassword123!secret' -asplaintext -force) -FirstName 'John' -LastName 'Doe' | ||
This will create a new user with a username of jdoe, the specified password, firstname of John, and LastName as Doe | ||
#> | ||
|
||
[CmdletBinding(SupportsShouldProcess = $true,ConfirmImpact = 'High')] | ||
Param( | ||
# Username to assign to the created user | ||
[Parameter(Mandatory=$true)] | ||
[ValidateNotNullorEmpty()] | ||
[String]$Username, | ||
# Password for newly created user | ||
[Parameter(Mandatory=$true)] | ||
[ValidateNotNullorEmpty()] | ||
[SecureString]$Password, | ||
# Users first name | ||
[String]$FirstName, | ||
#Users last name | ||
[String]$LastName, | ||
#Users email | ||
[String]$EmailAddress, | ||
#Users Contact Number | ||
[String]$ContactNumber, | ||
#MFA Server ID associated to user | ||
[String]$MfaServerId, | ||
# Rubrik server IP or FQDN | ||
[String]$Server = $global:RubrikConnection.server, | ||
# API version | ||
[String]$api = $global:RubrikConnection.api | ||
) | ||
|
||
Begin { | ||
|
||
# The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose | ||
# If a command needs to be run with each iteration or pipeline input, place it in the Process section | ||
|
||
# Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication | ||
Test-RubrikConnection | ||
|
||
# API data references the name of the function | ||
# For convenience, that name is saved here to $function | ||
$function = $MyInvocation.MyCommand.Name | ||
|
||
# Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint | ||
Write-Verbose -Message "Gather API Data for $function" | ||
$resources = Get-RubrikAPIData -endpoint $function | ||
Write-Verbose -Message "Load API data for $($resources.Function)" | ||
Write-Verbose -Message "Description: $($resources.Description)" | ||
|
||
} | ||
|
||
Process { | ||
|
||
# Convert SecureString password to send to API endpoint as string | ||
[String]$Password = [String](New-Object PSCredential "user",$Password).GetNetworkCredential().Password | ||
|
||
$uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id | ||
$uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri | ||
$body = New-BodyString -bodykeys ($resources.Body.Keys) -parameters ((Get-Command $function).Parameters.Values) | ||
$result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body | ||
$result = Test-ReturnFormat -api $api -result $result -location $resources.Result | ||
$result = Test-FilterObject -filter ($resources.Filter) -result $result | ||
|
||
return $result | ||
|
||
} # End of process | ||
} # End of function |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#requires -Version 3 | ||
function Remove-RubrikUser | ||
{ | ||
<# | ||
.SYNOPSIS | ||
Removes a Rubrik user | ||
.DESCRIPTION | ||
The Remove-RubrikUser cmdlet is used to remove a user from the Rubrik cluster. | ||
.NOTES | ||
Written by Mike Preston for community usage | ||
Twitter: @mwpreston | ||
GitHub: mwpreston | ||
.LINK | ||
http://rubrikinc.github.io/rubrik-sdk-for-powershell/reference/Remove-RubrikUser.html | ||
.EXAMPLE | ||
Remove-RubrikUser -id "11111111-2222-3333-4444-555555555555" | ||
This will remove the user matching id "11111111-2222-3333-4444-555555555555". | ||
.EXAMPLE | ||
Get-RubrikUser -Username 'john.doe' | Remove-RubrikUser | ||
This will remove the user with the matching username of john.doe | ||
#> | ||
|
||
[CmdletBinding(SupportsShouldProcess = $true,ConfirmImpact = 'High')] | ||
Param( | ||
# ID of user to remove. | ||
[Parameter(Mandatory=$true,ValueFromPipelineByPropertyName = $true)] | ||
[ValidateNotNullOrEmpty()] | ||
[String]$Id, | ||
# Rubrik server IP or FQDN | ||
[String]$Server = $global:RubrikConnection.server, | ||
# API version | ||
[String]$api = $global:RubrikConnection.api | ||
) | ||
|
||
Begin { | ||
|
||
# The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose | ||
# If a command needs to be run with each iteration or pipeline input, place it in the Process section | ||
|
||
# Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication | ||
Test-RubrikConnection | ||
|
||
# API data references the name of the function | ||
# For convenience, that name is saved here to $function | ||
$function = $MyInvocation.MyCommand.Name | ||
|
||
# Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint | ||
Write-Verbose -Message "Gather API Data for $function" | ||
$resources = Get-RubrikAPIData -endpoint $function | ||
Write-Verbose -Message "Load API data for $($resources.Function)" | ||
Write-Verbose -Message "Description: $($resources.Description)" | ||
|
||
} | ||
|
||
Process { | ||
|
||
$uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id | ||
$uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri | ||
$body = New-BodyString -bodykeys ($resources.Body.Keys) -parameters ((Get-Command $function).Parameters.Values) | ||
$result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body | ||
$result = Test-ReturnFormat -api $api -result $result -location $resources.Result | ||
$result = Test-FilterObject -filter ($resources.Filter) -result $result | ||
|
||
return $result | ||
|
||
} # End of process | ||
} # End of function |
Oops, something went wrong.