-
Notifications
You must be signed in to change notification settings - Fork 49
/
New-StaticGroup.ps1
86 lines (70 loc) · 2.96 KB
/
New-StaticGroup.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<#
_author_ = Raajeev Kalyanaraman <[email protected]>
Copyright (c) 2022 Dell EMC Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
#>
<#
.SYNOPSIS
Script to create a static group in OME
.DESCRIPTION
This script uses the OME REST API to create a new
static group in OME. The user will need to manually add
devices to this newly created group. For authentication
X-Auth is used over Basic Authentication
Note that the credentials entered are not stored to disk.
.PARAMETER IpAddress
This is the IP address of the OME Appliance
.PARAMETER Credentials
Credentials used to talk to the OME Appliance
.PARAMETER GroupName
Name for the static group to be created
.PARAMETER GroupDescription
An optional description for your group
.EXAMPLE
$cred = Get-Credential
.\New-StaticGroup.ps1 -IpAddress "10.xx.xx.xx" -Credentials $cred -GroupName "Test_OME_Group"
.EXAMPLE
.\New-StaticGroup.ps1 -IpAddress "10.xx.xx.xx" -GroupName "Test_OME" -GroupDescription "This is my group"
In this instance you will be prompted for credentials to use
#>
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[System.Net.IPAddress] $IpAddress,
[Parameter(Mandatory)]
[pscredential] $Credentials,
[Parameter(Mandatory)]
[string] $GroupName,
[Parameter(Mandatory=$false)]
[string] $GroupDescription = ""
)
Try {
Write-Host "Getting the ID for Static Groups..."
$Type = "application/json"
$StaticGrpResp = Invoke-RestMethod -Uri "https://$($IpAddress)/api/GroupService/Groups?`$filter=Name eq 'Static Groups'" `
-Method Get -Credential $Credentials -SkipCertificateCheck
$StaticGrpId = $StaticGrpResp.value[0].Id
$GrpPayload = @{
GroupModel = @{
Name = $GroupName;
Description = $GroupDescription;
MembershipTypeId = 12;
ParentId = [uint32]$StaticGrpId
}
} | ConvertTo-Json -Depth 6
Write-Host "Creating new group..."
$CreateResp = Invoke-RestMethod -Uri "https://$($IpAddress)/api/GroupService/Actions/GroupService.CreateGroup" `
-Method POST -ContentType $Type -Body $GrpPayload -Credential $Credentials -SkipCertificateCheck
Write-Host "New group created - ID: $($CreateResp)"
}
catch {
Write-Error "Check if the group name already exists in OME and retry... Exception was: $($_.Exception.Message)"
}