Skip to content

Commit 128f13a

Browse files
committed
Merge remote-tracking branch 'Azure/release-3.2.0' into athipp-dev2
2 parents 59cee57 + 3d1beec commit 128f13a

File tree

290 files changed

+58492
-38597
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

290 files changed

+58492
-38597
lines changed

ChangeLog.md

Lines changed: 101 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,103 @@
1+
## 2016.11.02 - Version 3.1.0
2+
* ApiManagement
3+
* Fixed cmdlet Import-AzureRmApiManagementApi when importing Api by SpecificationByUrl parameter
4+
* New-AzureRmApiManagement supports creating an ApiManagement service in a VirtualNetwork and with additional regions
5+
* AzureBatch
6+
* Rename cmdlet Get-AzureRmBatchSubscriptionQuotas to Get-AzureRmBatchLocationsQuotas (an alias for the old command was created)
7+
- Rename return type PSBatchSubscriptionQuotas to PSBatchLocationQuotas (no property changes)
8+
* Compute
9+
* Update formats for list of VMs, VMScaleSets and ContainerService
10+
- The default format of Get-AzureRmVM, Get-AzureRmVmss and Get-AzureRmContainerService is not table format when these cmdlets call List Operation
11+
* Fix overprovision issue for VMScaleSet
12+
- Because of the bug in Compute client library (and Swagger spec) regarding overprovision property of VMScaleSet, this property did not show up correctly.
13+
* Better piping scenario for VMScaleSets and ContainerService cmdlets
14+
- VMScaleSet and ContainerService now have "ResourceGroupName" property, so when piping Get command to Delete/Update command, -ResourceGroupName is not required.
15+
* Separate paremater sets for Set-AzureRmVM with Generalized and Redeploy parameter
16+
* Reduce time taken by Get-AzureRmVMDiskEncryptionStatus cmdlet from two minutes to under five seconds
17+
* Allow Set-AzureRmVMDiskEncryptionStatus to be used with VHDs residing in multiple resource groups
18+
* DataLakeAnalytics
19+
* Addition of Catalog CRUD cmdlets:
20+
- The following cmdlets are replacing Secret CRUD cmdlets. In the next release Secret CRUD cmdlets will be removed.
21+
- New-AzureRMDataLakeAnalyticsCatalogCredential
22+
- Set-AzureRMDataLakeAnalyticsCatalogCredential
23+
- Remove-AzureRMDataLakeAnalyticsCatalogCredential
24+
* Fixes for Get-AzureRMDataLakeAnalyticsCatalogItem
25+
- Better error messaging and support for invalid input
26+
* General help improvements
27+
- Clearer help for job operations
28+
- Fixed typos and incorrect examples
29+
* DataLakeStore
30+
* Improvements to import and export data cmdlets
31+
- Drastically increased performance for distributed download scenarios, where multiple sessions are running across many clients targeting the same ADLS account.
32+
- Better error handling and messaging for both upload and download scenarios.
33+
* Full Firewall rules management CRUD
34+
- The below cmdlets can be used to manage firewall rules for an ADLS account:
35+
- Add-AzureRMDataLakeStoreFirewallRule
36+
- Set-AzureRMDataLakeStoreFirewallRule
37+
- Get-AzureRMDataLakeStoreFirewallRule
38+
- Remove-AzureRMDataLakeStoreFirewallRule
39+
* Full Trusted ID provider management CRUD
40+
- The below cmdlets can be used to manage trusted identity providers for an ADLS account:
41+
- Add-AzureRMDataLakeStoreTrustedIdProvider
42+
- Set-AzureRMDataLakeStoreTrustedIdProvider
43+
- Get-AzureRMDataLakeStoreTrustedIdProvider
44+
- Remove-AzureRMDataLakeStoreTrustedIdProvider
45+
* Account Encryption Support
46+
- You can now encrypt newly created ADLS accounts as well as enable encryption on existing ADLS accounts using the New-AzureRMDataLakeStoreAccount and Set-AzureRMDataLakeStoreAccount cmdlets, respectively.
47+
* HDInsight
48+
* Add support to create HDInsight Spark 2.0 cluster using new cmdlet Add-AzureRmHDInsightComponentVersion to specify the component version of Spark
49+
* Get-AzureRmHDInsightCluster now returns the component version in a Spark 2.0 cluster
50+
* New cmdlet
51+
- Add-AzureRmHDInsightSecurityProfile
52+
* Insights
53+
* Add several warning/deprecation messages about future changes to cmdlets
54+
- Add-AzureRmAutoscaleSetting
55+
- Get-AzureRmMetric
56+
- Get-AzureRmMetricDefinition
57+
- New-AzureRmAutoscaleRule
58+
- Remove-AzureRmAlertRule
59+
- Remove-AzureRmAutoscaleSetting
60+
- Remove-AzureRmLogProfile
61+
* Add new parameter to Set-AzureRmDiagnosticSetting
62+
- Parameter WorkspaceId is the OMS workspace Id
63+
* MachineLearning
64+
* Add support for Azure Machine Learning Committment Plans
65+
- Get-AzureRmMLCommitmentAssociation
66+
- Get-AzureRmMLCommitmentPlan
67+
- Get-AzureRmMLCommitmentPlanUsageHistory
68+
- Move-AzureRmMLCommitmentAssociation
69+
- New-AzureRmMLCommitmentPlan
70+
- Remove-AzureRmMLCommitmentPlan
71+
- Update-AzureRmMLCommitmentPlan
72+
* Network
73+
* Add-AzureRmVirtualNetworkPeering
74+
- Parameter AlloowGatewayTransit renamed to AllowGatewayTransit (an alias for the old parameter was created)
75+
- Fixed issue where UseRemoteGateway property was not being populated in the request to the server
76+
* Get-AzureRmEffectiveNetworkSecurityGroup
77+
- Add warning if there is no response from GetEffectiveNSG
78+
* Add Source property to EffectiveRoute
79+
* NotificationHubs
80+
* New cmdlets
81+
- New-AzureRmNotificationHubKey
82+
- New-AzureRmNotificationHubsNamespaceKey
83+
* OperationalInsights
84+
* Add new parameter to cmdlet New-AzureRmOperationalInsightsWindowsPerformanceCounterDataSource
85+
- UseLegacyCollector (switch parameter) will enable collection of 32-bit legacy performance counters on 64-bit machines
86+
* Rename New-AzureRmOperationalInsightsAzureAuditDataSource to New-AzureRmOperationalInsightsAzureActivityLogDataSource (an alias for the old command was created)
87+
* Get-AzureRmOperationalInsightsDataSource returns null instead of throwing an exception if not found
88+
* New-AzureRmOperationalInsightsComputerGroup now supports defining a group simply by separating computer names with commas
89+
* Profile
90+
* Add-AzureRmAccount
91+
- Add position for Credential parameter so the following command is allowed: Add-AzureRmAccount (Get-Credential)
92+
- Updated parameter sets so the SubscriptionId and SubscriptionName are mutually exclusive
93+
* Resources
94+
* Lookup of AAD group by Id now uses GetObjectsByObjectId AAD Graph call instead of Groups/<id>
95+
- This will enable Groups lookup in CSP scenario
96+
* Remove unnecessary AAD graph call in Get role assignments logic
97+
- Only make call when needed instead of always
98+
* Fixed issue where Remove-AzureRmResource would throw an exception if one of the resources passed through the pipeline failed to be removed
99+
- If cmdlet fails to remove one of the resources, the result will not have an effect on the removal of other resources
100+
1101
## 2016.09.28 version 3.0.0
2102
* This release contains breaking changes. Please see [the migration guide](documentation/release-notes/migration-guide.3.0.0.md) for change details and the impact on existing scripts.
3103
* ApiManagement
@@ -2364,4 +2464,4 @@ Virtual Network cmdlets
23642464
* iisnode 0.1.13
23652465

23662466
2011.12.09 Version 0.5.0
2367-
* Initial Release
2467+
* Initial Release

setup/azurecmd.wxs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
33

4-
<?define productName="Microsoft Azure PowerShell - September 2016" ?>
4+
<?define productName="Microsoft Azure PowerShell - November 2016" ?>
55
<?define sourceDir="$(var.SolutionDir)..\src\Package\$(var.Configuration)" ?>
66
<?define caSourceDir="$(var.SolutionDir)setup\bin\$(var.Configuration)" ?>
77

8-
<?define version="3.0.0" ?>
8+
<?define version="3.1.0" ?>
99

1010
<Product Id="*"
1111
Name="$(var.productName)"

src/Common/Commands.Common.Authentication.Test/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828

2929
[assembly: ComVisible(false)]
3030
[assembly: CLSCompliant(false)]
31-
[assembly: AssemblyVersion("3.0.0")]
32-
[assembly: AssemblyFileVersion("3.0.0")]
31+
[assembly: AssemblyVersion("3.1.0")]
32+
[assembly: AssemblyFileVersion("3.1.0")]
3333
[assembly: CollectionBehavior(DisableTestParallelization = true)]

src/Common/Commands.Common.Authentication/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@
4646
// You can specify all the values or you can default the Build and Revision Numbers
4747
// by using the '*' as shown below:
4848
// [assembly: AssemblyVersion("1.0.*")]
49-
[assembly: AssemblyVersion("3.0.0")]
50-
[assembly: AssemblyFileVersion("3.0.0")]
49+
[assembly: AssemblyVersion("3.1.0")]
50+
[assembly: AssemblyFileVersion("3.1.0")]

src/Common/Commands.Common.Storage/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@
2424
[assembly: ComVisible(false)]
2525
[assembly: CLSCompliant(false)]
2626
[assembly: Guid("c565107e-98a9-4703-85cd-a7efc3d8da7b")]
27-
[assembly: AssemblyVersion("3.0.0")]
28-
[assembly: AssemblyFileVersion("3.0.0")]
27+
[assembly: AssemblyVersion("3.1.0")]
28+
[assembly: AssemblyFileVersion("3.1.0")]

src/Common/Commands.Common/AzurePSCmdlet.cs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ namespace Microsoft.WindowsAzure.Commands.Utilities.Common
3535
/// </summary>
3636
public abstract class AzurePSCmdlet : PSCmdlet, IDisposable
3737
{
38+
private const string PSVERSION = "PSVersion";
39+
private const string DEFAULT_PSVERSION = "3.0.0.0";
40+
3841
public ConcurrentQueue<string> DebugMessages { get; private set; }
3942

4043
private RecordingTracingInterceptor _httpTracingInterceptor;
@@ -57,6 +60,35 @@ protected virtual bool IsErrorMetricEnabled
5760
get { return true; }
5861
}
5962

63+
/// <summary>
64+
/// Indicates installed PowerShell version
65+
/// </summary>
66+
private string _psVersion;
67+
68+
/// <summary>
69+
/// Get PsVersion returned from PowerShell.Runspace instance
70+
/// </summary>
71+
protected string PSVersion
72+
{
73+
get
74+
{
75+
if (string.IsNullOrEmpty(_psVersion))
76+
{
77+
if(this.Host != null)
78+
{
79+
_psVersion = this.Host.Version.ToString();
80+
}
81+
else
82+
{
83+
//We are doing this for perf. reasons. This code will execute during tests and so reducing the perf. overhead while running tests.
84+
_psVersion = DEFAULT_PSVERSION;
85+
}
86+
}
87+
88+
return _psVersion;
89+
}
90+
}
91+
6092
/// <summary>
6193
/// Gets the PowerShell module name used for user agent header.
6294
/// By default uses "Azure PowerShell"
@@ -243,9 +275,9 @@ protected virtual void TearDownDebuggingTraces()
243275

244276
protected virtual void SetupHttpClientPipeline()
245277
{
246-
ProductInfoHeaderValue userAgentValue = new ProductInfoHeaderValue(
247-
ModuleName, string.Format("v{0}", ModuleVersion));
248-
AzureSession.ClientFactory.UserAgents.Add(userAgentValue);
278+
AzureSession.ClientFactory.UserAgents.Add(new ProductInfoHeaderValue(ModuleName, string.Format("v{0}", ModuleVersion)));
279+
AzureSession.ClientFactory.UserAgents.Add(new ProductInfoHeaderValue(PSVERSION, string.Format("v{0}", PSVersion)));
280+
249281
AzureSession.ClientFactory.AddHandler(
250282
new CmdletInfoHandler(this.CommandRuntime.ToString(),
251283
this.ParameterSetName, this._clientRequestId));

src/Common/Commands.Common/AzurePowerShell.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ public class AzurePowerShell
2626

2727
public const string AssemblyCopyright = "Copyright © Microsoft";
2828

29-
public const string AssemblyVersion = "3.0.0";
29+
public const string AssemblyVersion = "3.1.0";
3030

31-
public const string AssemblyFileVersion = "3.0.0";
31+
public const string AssemblyFileVersion = "3.1.0";
3232

3333
public const string ProfileFile = "AzureProfile.json";
3434

src/Common/Commands.Common/Commands.Common.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@
139139
<Compile Include="AzurePSDataCollectionProfile.cs" />
140140
<Compile Include="AzurePowerShell.cs" />
141141
<Compile Include="AzureRmProfileProvider.cs" />
142-
<Compile Include="AzureSMProfileProvder.cs" />
142+
<Compile Include="AzureSMProfileProvider.cs" />
143143
<Compile Include="ConcurrentQueueExtensions.cs" />
144144
<Compile Include="Constants.cs" />
145145
<Compile Include="ContextExtensions.cs" />

src/Common/Commands.Common/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
[assembly: ComVisible(false)]
2626
[assembly: CLSCompliant(false)]
2727
[assembly: Guid("4f3ab2e4-cc7a-43ac-bb15-f481fcf94d58")]
28-
[assembly: AssemblyVersion("3.0.0")]
29-
[assembly: AssemblyFileVersion("3.0.0")]
28+
[assembly: AssemblyVersion("3.1.0")]
29+
[assembly: AssemblyFileVersion("3.1.0")]
3030
#if SIGN
3131
[assembly: InternalsVisibleTo("Microsoft.WindowsAzure.Commands, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
3232
[assembly: InternalsVisibleTo("Microsoft.WindowsAzure.Commands.CloudService, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]

src/Common/Commands.ScenarioTests.Common/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("3.0.0")]
36-
[assembly: AssemblyFileVersion("3.0.0")]
35+
[assembly: AssemblyVersion("3.1.0")]
36+
[assembly: AssemblyFileVersion("3.1.0")]
3737
[assembly: CollectionBehavior(DisableTestParallelization = true)]

src/ResourceManager/AnalysisServices/Commands.AnalysisServices.Test/ScenarioTests/AsTests.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function Test-AnalysisServicesServer
1616
$serverName = Get-AnalysisServicesServerName
1717
New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
1818

19-
$serverCreated = New-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Location $location -Sku 'S1' -Administrators '[email protected],[email protected]'
19+
$serverCreated = New-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Location $location -Sku 'S1' -Administrator '[email protected],[email protected]'
2020

2121
Assert-AreEqual $serverName $serverCreated.Name
2222
Assert-AreEqual $location $serverCreated.Location
@@ -42,8 +42,8 @@ function Test-AnalysisServicesServer
4242
Assert-NotNull $serverUpdated.Tag "Tag do not exists"
4343
Assert-NotNull $serverUpdated.Tag["TestTag"] "The updated tag 'TestTag' does not exist"
4444

45-
$serverUpdated = Set-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Administrators '[email protected]' -PassThru
46-
Assert-NotNull $serverUpdated.AsAdministrators "Server Administrators list is empty"
45+
$serverUpdated = Set-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Administrator '[email protected]' -PassThru
46+
Assert-NotNull $serverUpdated.AsAdministrators "Server Administrator list is empty"
4747
Assert-AreEqual $serverUpdated.AsAdministrators.Count 1
4848

4949
Assert-AreEqual $serverName $serverUpdated.Name
@@ -135,7 +135,7 @@ function Test-NegativeAnalysisServicesServer
135135
$resourceGroupName = Get-ResourceGroupName
136136
$serverName = Get-AnalysisServicesServerName
137137
New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
138-
$serverCreated = New-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Location $location -Sku 'S1' -Administrators '[email protected],[email protected]'
138+
$serverCreated = New-AzureRmAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $serverName -Location $location -Sku 'S1' -Administrator '[email protected],[email protected]'
139139

140140
Assert-AreEqual $serverName $serverCreated.Name
141141
Assert-AreEqual $location $serverCreated.Location

src/ResourceManager/AnalysisServices/Commands.AnalysisServices/Commands/NewAzureRmAnalysisServicesServer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class NewAnalysisServicesServer : AnalysisServicesCmdletBase
6060
[Parameter(ValueFromPipelineByPropertyName = true, Position = 4, Mandatory = false,
6161
HelpMessage = "A comma separated server names to set as administrators on the server")]
6262
[ValidateNotNull]
63-
public string Administrators { get; set; }
63+
public string Administrator { get; set; }
6464

6565
public override void ExecuteCmdlet()
6666
{
@@ -92,7 +92,7 @@ public override void ExecuteCmdlet()
9292
}
9393
}
9494

95-
var createdServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, Location, Sku, Tag, Administrators);
95+
var createdServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, Location, Sku, Tag, Administrator);
9696
WriteObject(AzureAnalysisServicesServer.FromAnalysisServicesServer(createdServer));
9797
}
9898
}

src/ResourceManager/AnalysisServices/Commands.AnalysisServices/Commands/SetAzureRmAnalysisServicesServer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class SetAzureAnalysisServicesServer : AnalysisServicesCmdletBase
5252
[Parameter(ValueFromPipelineByPropertyName = true, Position = 4, Mandatory = false,
5353
HelpMessage = "A comma separated server names to set as administrators on the server")]
5454
[ValidateNotNull]
55-
public string Administrators { get; set; }
55+
public string Administrator { get; set; }
5656

5757
[Parameter(Mandatory = false)]
5858
public SwitchParameter PassThru { get; set; }
@@ -78,7 +78,7 @@ public override void ExecuteCmdlet()
7878
Tag = TagsConversionHelper.CreateTagHashtable(currentServer.Tags);
7979
}
8080

81-
AnalysisServicesServer updatedServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, location, Sku, Tag, Administrators, currentServer);
81+
AnalysisServicesServer updatedServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, location, Sku, Tag, Administrator, currentServer);
8282

8383
if(PassThru.IsPresent)
8484
{

src/ResourceManager/AnalysisServices/Commands.AnalysisServices/Microsoft.Azure.Commands.AnalysisServices.dll-help.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@
156156
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
157157
</command:parameter>
158158
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="4">
159-
<maml:name>Administrators</maml:name>
159+
<maml:name>Administrator</maml:name>
160160
<maml:description>
161161
<maml:para>A string representing a comma separated list of users or groups to be set as administrators on the server. The users or groups need to be specified UPN format e.g. [email protected] or [email protected]</maml:para>
162162
</maml:description>
@@ -240,7 +240,7 @@
240240
<dev:defaultValue></dev:defaultValue>
241241
</command:parameter>
242242
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="4">
243-
<maml:name>Administrators</maml:name>
243+
<maml:name>Administrator</maml:name>
244244
<maml:description>
245245
<maml:para>A string representing a comma separated list of users or groups to be set as administrators on the server. The users or groups need to be specified UPN format e.g. [email protected] or [email protected]</maml:para>
246246
</maml:description>
@@ -680,7 +680,7 @@
680680
<command:parameterValue required="true" variableLength="false">Hashtable</command:parameterValue>
681681
</command:parameter>
682682
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="4">
683-
<maml:name>Administrators</maml:name>
683+
<maml:name>Administrator</maml:name>
684684
<maml:description>
685685
<maml:para>A string representing a comma separated list of users or groups to be set as administrators on the server. The users or groups need to be specified UPN format e.g. [email protected] or [email protected]</maml:para>
686686
</maml:description>
@@ -759,7 +759,7 @@
759759
<dev:defaultValue></dev:defaultValue>
760760
</command:parameter>
761761
<command:parameter required="false" variableLength="false" globbing="false" pipelineInput="true (ByPropertyName)" position="4">
762-
<maml:name>Administrators</maml:name>
762+
<maml:name>Administrator</maml:name>
763763
<maml:description>
764764
<maml:para>A string representing a comma separated list of users or groups to be set as administrators on the server. The users or groups need to be specified UPN format e.g. [email protected] or [email protected]</maml:para>
765765
</maml:description>

0 commit comments

Comments
 (0)