Skip to content

Commit c0d0c74

Browse files
wonnerwanyang7
andauthored
[Synapse] Update Set-AzSynapseSqlActiveDirectoryAdministrator to add support for setting SQL admin only by ObjectId (#15611)
* update set sql admin cmdlet * update help doc Co-authored-by: Wan Yang <[email protected]>
1 parent c24f304 commit c0d0c74

File tree

4 files changed

+81
-31
lines changed

4 files changed

+81
-31
lines changed

src/Synapse/Synapse/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
- Added `Get-AzSynapseManagedPrivateEndpoint` cmdlet
2424
- Added `Remove-AzSynapseManagedPrivateEndpoint` cmdlet
2525
* Fixed the blank page issue of pause setting and scale setting for Apache Spark pool through management API
26+
* Updated `Set-AzSynapseSqlActiveDirectoryAdministrator` to support for setting SQL Admin by `DisplayName` or by `ObjectId`
2627

2728
## Version 0.14.0
2829
* Added parameter `-ManagedResourceGroupName` for the `New-AzSynapseWorkspace` cmdlet

src/Synapse/Synapse/Commands/ManagementCommands/WorkspaceActiveDirectoryAdministrator/SetAzureSynapseSqlActiveDirectoryAdministrator.cs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,62 @@
1010
namespace Microsoft.Azure.Commands.Synapse
1111
{
1212
[Cmdlet(VerbsCommon.Set, ResourceManager.Common.AzureRMConstants.AzureRMPrefix + SynapseConstants.SynapsePrefix + SynapseConstants.Sql + SynapseConstants.ActiveDirectoryAdministrator,
13-
DefaultParameterSetName = SetByNameParameterSet, SupportsShouldProcess = true)]
13+
DefaultParameterSetName = SetByNameAndDisplayNameParameterSet, SupportsShouldProcess = true)]
1414
[OutputType(typeof(PSWorkspaceAadAdminInfo))]
1515
public class SetAzureSynapseSqlActiveDirectoryAdministrator : SynapseManagementCmdletBase
1616
{
17-
private const string SetByNameParameterSet = "SetByNameParameterSet";
18-
private const string SetByInputObjectParameterSet = "SetByInputObjectParameterSet";
19-
private const string SetByResourceIdParameterSet = "SetByResourceIdParameterSet";
17+
private const string SetByNameAndDisplayNameParameterSet = "SetByNameAndDisplayNameParameterSet";
18+
private const string SetByInputObjectAndDisplayNameParameterSet = "SetByInputObjectAndDisplayNameParameterSet";
19+
private const string SetByResourceIdAndDisplayNameParameterSet = "SetByResourceIdAndDisplayNameParameterSet";
20+
private const string SetByNameAndObjectIdParameterSet = "SetByNameAndObjectIdParameterSet";
21+
private const string SetByInputObjectAndObjectIdParameterSet = "SetByInputObjectAndObjectIdParameterSet";
22+
private const string SetByResourceIdAndObjectIdParameterSet = "SetByResourceIdAndObjectIdParameterSet";
2023

21-
[Parameter(ParameterSetName = SetByNameParameterSet, Mandatory = false,
24+
[Parameter(ParameterSetName = SetByNameAndDisplayNameParameterSet, Mandatory = false,
25+
HelpMessage = HelpMessages.ResourceGroupName)]
26+
[Parameter(ParameterSetName = SetByNameAndObjectIdParameterSet, Mandatory = false,
2227
HelpMessage = HelpMessages.ResourceGroupName)]
2328
[ResourceGroupCompleter()]
2429
[ValidateNotNullOrEmpty]
2530
public string ResourceGroupName { get; set; }
2631

27-
[Parameter(ParameterSetName = SetByNameParameterSet,
32+
[Parameter(ParameterSetName = SetByNameAndDisplayNameParameterSet,
33+
Mandatory = true, HelpMessage = HelpMessages.WorkspaceName)]
34+
[Parameter(ParameterSetName = SetByNameAndObjectIdParameterSet,
2835
Mandatory = true, HelpMessage = HelpMessages.WorkspaceName)]
2936
[ResourceNameCompleter(ResourceTypes.Workspace, nameof(ResourceGroupName))]
3037
[ValidateNotNullOrEmpty]
3138
public string WorkspaceName { get; set; }
3239

33-
[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectParameterSet,
40+
[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectAndDisplayNameParameterSet,
41+
Mandatory = true, HelpMessage = HelpMessages.WorkspaceObject)]
42+
[Parameter(ValueFromPipeline = true, ParameterSetName = SetByInputObjectAndObjectIdParameterSet,
3443
Mandatory = true, HelpMessage = HelpMessages.WorkspaceObject)]
3544
[ValidateNotNull]
3645
public PSSynapseWorkspace InputObject { get; set; }
3746

38-
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdParameterSet,
47+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndDisplayNameParameterSet,
48+
Mandatory = true, HelpMessage = HelpMessages.WorkspaceResourceId)]
49+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndObjectIdParameterSet,
3950
Mandatory = true, HelpMessage = HelpMessages.WorkspaceResourceId)]
4051
[ValidateNotNullOrEmpty]
4152
public string ResourceId { get; set; }
4253

43-
[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
54+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByNameAndDisplayNameParameterSet,
55+
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
56+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByInputObjectAndDisplayNameParameterSet,
57+
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
58+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndDisplayNameParameterSet,
59+
Mandatory = true, HelpMessage = HelpMessages.DisplayName)]
4460
[ValidateNotNullOrEmpty()]
4561
public string DisplayName { get; set; }
4662

47-
[Parameter(ValueFromPipelineByPropertyName = false, Mandatory = false, HelpMessage = HelpMessages.ObjectId)]
63+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByNameAndObjectIdParameterSet,
64+
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
65+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByInputObjectAndObjectIdParameterSet,
66+
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
67+
[Parameter(ValueFromPipelineByPropertyName = false, ParameterSetName = SetByResourceIdAndObjectIdParameterSet,
68+
Mandatory = true, HelpMessage = HelpMessages.ObjectId)]
4869
[ValidateNotNullOrEmpty()]
4970
public Guid ObjectId { get; set; }
5071

src/Synapse/Synapse/Models/SynapseAnalyticsManagementClient.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,19 @@ public WorkspaceAadAdminInfo CreateOrUpdateSqlActiveDirectoryAdministrators(stri
375375
{
376376
try
377377
{
378-
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, GetActiveDirectoryInformation(displayName, objectId));
378+
if(displayName != null)
379+
{
380+
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, GetActiveDirectoryInformation(displayName, objectId));
381+
}
382+
else
383+
{
384+
var info = new WorkspaceAadAdminInfo()
385+
{
386+
Sid = objectId.ToString(),
387+
TenantId = _tenantId.ToString()
388+
};
389+
return _synapseManagementClient.WorkspaceAadAdmins.CreateOrUpdate(resourceGroupName, workspaceName, info);
390+
}
379391
}
380392
catch (CloudException ex)
381393
{

src/Synapse/Synapse/help/Set-AzSynapseSqlActiveDirectoryAdministrator.md

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,41 @@ Provisions an Azure AD administrator for Synapse Analytics SQL pool.
1212

1313
## SYNTAX
1414

15-
### SetByNameParameterSet (Default)
15+
### SetByNameAndDisplayNameParameterSet (Default)
1616
```
1717
Set-AzSynapseSqlActiveDirectoryAdministrator [-ResourceGroupName <String>] -WorkspaceName <String>
18-
-DisplayName <String> [-ObjectId <Guid>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
19-
[-Confirm] [<CommonParameters>]
18+
-DisplayName <String> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
19+
[<CommonParameters>]
2020
```
2121

22-
### SetByInputObjectParameterSet
22+
### SetByNameAndObjectIdParameterSet
2323
```
24-
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -DisplayName <String>
25-
[-ObjectId <Guid>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
26-
[<CommonParameters>]
24+
Set-AzSynapseSqlActiveDirectoryAdministrator [-ResourceGroupName <String>] -WorkspaceName <String>
25+
-ObjectId <Guid> [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
26+
```
27+
28+
### SetByInputObjectAndDisplayNameParameterSet
29+
```
30+
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -DisplayName <String> [-AsJob]
31+
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
32+
```
33+
34+
### SetByInputObjectAndObjectIdParameterSet
35+
```
36+
Set-AzSynapseSqlActiveDirectoryAdministrator -InputObject <PSSynapseWorkspace> -ObjectId <Guid> [-AsJob]
37+
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
2738
```
2839

29-
### SetByResourceIdParameterSet
40+
### SetByResourceIdAndDisplayNameParameterSet
3041
```
31-
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -DisplayName <String> [-ObjectId <Guid>]
32-
[-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
42+
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -DisplayName <String> [-AsJob]
43+
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
44+
```
45+
46+
### SetByResourceIdAndObjectIdParameterSet
47+
```
48+
Set-AzSynapseSqlActiveDirectoryAdministrator -ResourceId <String> -ObjectId <Guid> [-AsJob]
49+
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
3350
```
3451

3552
## DESCRIPTION
@@ -55,11 +72,10 @@ This command provisions an Azure AD administrator group named DBAs for the works
5572

5673
### Example 2
5774
```powershell
58-
PS C:\> Set-AzSynapseSqlActiveDirectoryAdministrator -WorkspaceName ContosoWorkspace -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"
75+
PS C:\> Set-AzSynapseSqlActiveDirectoryAdministrator -WorkspaceName ContosoWorkspace -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"
5976
```
6077

61-
This command provisions an Azure AD administrator group named DBAs for the workspace named ContosoWorkspace.
62-
This makes sure that the command succeeds even if the display name of the group is not unique.
78+
This command provisions an Azure AD administrator by objectId for the workspace named ContosoWorkspace.
6379

6480
## PARAMETERS
6581

@@ -99,7 +115,7 @@ This display name must exist in the active directory associated with the current
99115
100116
```yaml
101117
Type: System.String
102-
Parameter Sets: (All)
118+
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByInputObjectAndDisplayNameParameterSet, SetByResourceIdAndDisplayNameParameterSet
103119
Aliases:
104120

105121
Required: True
@@ -114,7 +130,7 @@ workspace input object, usually passed through the pipeline.
114130
115131
```yaml
116132
Type: Microsoft.Azure.Commands.Synapse.Models.PSSynapseWorkspace
117-
Parameter Sets: SetByInputObjectParameterSet
133+
Parameter Sets: SetByInputObjectAndDisplayNameParameterSet, SetByInputObjectAndObjectIdParameterSet
118134
Aliases:
119135

120136
Required: True
@@ -129,10 +145,10 @@ Specifies the object ID of the user or group in Azure Active Directory for which
129145
130146
```yaml
131147
Type: System.Guid
132-
Parameter Sets: (All)
148+
Parameter Sets: SetByNameAndObjectIdParameterSet, SetByInputObjectAndObjectIdParameterSet, SetByResourceIdAndObjectIdParameterSet
133149
Aliases:
134150

135-
Required: False
151+
Required: True
136152
Position: Named
137153
Default value: None
138154
Accept pipeline input: False
@@ -144,7 +160,7 @@ Resource group name.
144160
145161
```yaml
146162
Type: System.String
147-
Parameter Sets: SetByNameParameterSet
163+
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByNameAndObjectIdParameterSet
148164
Aliases:
149165

150166
Required: False
@@ -159,7 +175,7 @@ Resource identifier of Synapse workspace.
159175
160176
```yaml
161177
Type: System.String
162-
Parameter Sets: SetByResourceIdParameterSet
178+
Parameter Sets: SetByResourceIdAndDisplayNameParameterSet, SetByResourceIdAndObjectIdParameterSet
163179
Aliases:
164180

165181
Required: True
@@ -174,7 +190,7 @@ Name of Synapse workspace.
174190
175191
```yaml
176192
Type: System.String
177-
Parameter Sets: SetByNameParameterSet
193+
Parameter Sets: SetByNameAndDisplayNameParameterSet, SetByNameAndObjectIdParameterSet
178194
Aliases:
179195

180196
Required: True

0 commit comments

Comments
 (0)