Skip to content

Commit b7952d5

Browse files
authored
Merge pull request #5992 from hyonholee/redeploy
[Compute] VMSS Redeploy and PerformMaintenance feature
2 parents 74fc599 + 8193e1e commit b7952d5

File tree

13 files changed

+6657
-81
lines changed

13 files changed

+6657
-81
lines changed

src/ResourceManager/Compute/ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
- Additional information about change #1
1919
-->
2020
## Current Release
21+
* VMSS Redeploy and PerformMaintenance feature
22+
- Add new switch parameter -Redeploy and -PerformMaintenance to `Set-AzureRmVmss` and `Set-AzureRmVmssVM`
2123
* Add DisableVMAgent switch parameter to `Set-AzureRmVMOperatingSystem` cmdlet
2224
* `New-AzureRmVm` and `New-AzureRmVmss` (simple parameter set) support a `Win10` image.
2325
* `Repair-AzureRmVmssServiceFabricUpdateDomain` cmdlet is added.

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,12 @@ public void TestVirtualMachineScaleSetForceUDWalk()
121121
{
122122
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetForceUDWalk");
123123
}
124+
125+
[Fact]
126+
[Trait(Category.AcceptanceType, Category.CheckIn)]
127+
public void TestVirtualMachineScaleSetRedeploy()
128+
{
129+
ComputeTestController.NewInstance.RunPsTest("Test-VirtualMachineScaleSetRedeploy");
130+
}
124131
}
125132
}

src/ResourceManager/Compute/Commands.Compute.Test/ScenarioTests/VirtualMachineScaleSetTests.ps1

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,3 +1590,129 @@ function Test-VirtualMachineScaleSetForceUDWalk
15901590
Clean-ResourceGroup $rgname
15911591
}
15921592
}
1593+
1594+
<#
1595+
.SYNOPSIS
1596+
Test Virtual Machine Scale Set Redeploy and PerformMaintenance
1597+
#>
1598+
function Test-VirtualMachineScaleSetRedeploy
1599+
{
1600+
# Setup
1601+
$rgname = Get-ComputeTestResourceName
1602+
1603+
try
1604+
{
1605+
# Common
1606+
$loc = Get-Location "Microsoft.Compute" "virtualMachines" "East US 2";
1607+
New-AzureRMResourceGroup -Name $rgname -Location $loc -Force;
1608+
1609+
# SRP
1610+
$stoname = 'sto' + $rgname;
1611+
$stotype = 'Standard_GRS';
1612+
New-AzureRMStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype;
1613+
$stoaccount = Get-AzureRMStorageAccount -ResourceGroupName $rgname -Name $stoname;
1614+
1615+
# NRP
1616+
$subnet = New-AzureRMVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
1617+
$vnet = New-AzureRMVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
1618+
$vnet = Get-AzureRMVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
1619+
$subnetId = $vnet.Subnets[0].Id;
1620+
1621+
# New VMSS Parameters
1622+
$vmssName = 'vmss' + $rgname;
1623+
$vmssType = 'Microsoft.Compute/virtualMachineScaleSets';
1624+
1625+
$adminUsername = 'Foo12';
1626+
$adminPassword = $PLACEHOLDER;
1627+
1628+
$imgRef = Get-DefaultCRPImage -loc $loc;
1629+
$vhdContainer = "https://" + $stoname + ".blob.core.windows.net/" + $vmssName;
1630+
1631+
$ipCfg = New-AzureRmVmssIPConfig -Name 'test' -SubnetId $subnetId;
1632+
$vmss = New-AzureRmVmssConfig -Location $loc -SkuCapacity 2 -SkuName 'Standard_A1_v2' -UpgradePolicyMode 'Automatic' `
1633+
| Add-AzureRmVmssNetworkInterfaceConfiguration -Name 'test' -Primary $true -IPConfiguration $ipCfg `
1634+
| Set-AzureRmVmssOSProfile -ComputerNamePrefix 'test' -AdminUsername $adminUsername -AdminPassword $adminPassword `
1635+
| Set-AzureRmVmssStorageProfile -Name 'test' -OsDiskCreateOption 'FromImage' -OsDiskCaching 'None' `
1636+
-ImageReferenceOffer $imgRef.Offer -ImageReferenceSku $imgRef.Skus -ImageReferenceVersion $imgRef.Version `
1637+
-ImageReferencePublisher $imgRef.PublisherName -VhdContainer $vhdContainer;
1638+
1639+
$result = New-AzureRmVmss -ResourceGroupName $rgname -Name $vmssName -VirtualMachineScaleSet $vmss;
1640+
1641+
Assert-AreEqual $loc.ToLowerInvariant().Replace(" ", "") $result.Location;
1642+
Assert-AreEqual 2 $result.Sku.Capacity;
1643+
Assert-AreEqual 'Standard_A1_v2' $result.Sku.Name;
1644+
Assert-AreEqual 'Automatic' $result.UpgradePolicy.Mode;
1645+
1646+
# Validate Network Profile
1647+
Assert-AreEqual 'test' $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Name;
1648+
Assert-AreEqual $true $result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].Primary;
1649+
Assert-AreEqual $subnetId `
1650+
$result.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id;
1651+
1652+
# Validate OS Profile
1653+
Assert-AreEqual 'test' $result.VirtualMachineProfile.OsProfile.ComputerNamePrefix;
1654+
Assert-AreEqual $adminUsername $result.VirtualMachineProfile.OsProfile.AdminUsername;
1655+
Assert-Null $result.VirtualMachineProfile.OsProfile.AdminPassword;
1656+
1657+
# Validate Storage Profile
1658+
Assert-AreEqual 'test' $result.VirtualMachineProfile.StorageProfile.OsDisk.Name;
1659+
Assert-AreEqual 'FromImage' $result.VirtualMachineProfile.StorageProfile.OsDisk.CreateOption;
1660+
Assert-AreEqual 'None' $result.VirtualMachineProfile.StorageProfile.OsDisk.Caching;
1661+
Assert-AreEqual $vhdContainer $result.VirtualMachineProfile.StorageProfile.OsDisk.VhdContainers[0];
1662+
Assert-AreEqual $imgRef.Offer $result.VirtualMachineProfile.StorageProfile.ImageReference.Offer;
1663+
Assert-AreEqual $imgRef.Skus $result.VirtualMachineProfile.StorageProfile.ImageReference.Sku;
1664+
Assert-AreEqual $imgRef.Version $result.VirtualMachineProfile.StorageProfile.ImageReference.Version;
1665+
Assert-AreEqual $imgRef.PublisherName $result.VirtualMachineProfile.StorageProfile.ImageReference.Publisher;
1666+
1667+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1668+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1669+
$id = $vmssVMs[0].InstanceId;
1670+
1671+
# Redeploy operation
1672+
Set-AzureRmVmss -Redeploy -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1673+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1674+
Assert-AreEqual "Succeeded" $vmss.ProvisioningState;
1675+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1676+
Assert-AreEqual "Succeeded" $vmssVMs[0].ProvisioningState;
1677+
Assert-AreEqual "Succeeded" $vmssVMs[1].ProvisioningState;
1678+
1679+
Set-AzureRmVmss -Redeploy -ResourceGroupName $rgname -VMScaleSetName $vmssName -InstanceId $id;
1680+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1681+
Assert-AreEqual "Succeeded" $vmss.ProvisioningState;
1682+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1683+
Assert-AreEqual "Succeeded" $vmssVMs[0].ProvisioningState;
1684+
Assert-AreEqual "Succeeded" $vmssVMs[1].ProvisioningState;
1685+
1686+
Set-AzureRmVmssVM -Redeploy -ResourceGroupName $rgname -VMScaleSetName $vmssName -InstanceId $id;
1687+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1688+
Assert-AreEqual "Succeeded" $vmss.ProvisioningState;
1689+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1690+
Assert-AreEqual "Succeeded" $vmssVMs[0].ProvisioningState;
1691+
Assert-AreEqual "Succeeded" $vmssVMs[1].ProvisioningState;
1692+
1693+
# PerformMaintenance operation
1694+
# Note that PerformMaintenace operation can only be performed when VMSS requires a maintenance
1695+
# and after the given subscription gets a permission for the operation due to the required maintenance.
1696+
Assert-ThrowsContains { Set-AzureRmVmss -PerformMaintenance -ResourceGroupName $rgname -VMScaleSetName $vmssName; } `
1697+
"since the Subscription of this VM is not eligible";
1698+
1699+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1700+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1701+
1702+
Assert-ThrowsContains { Set-AzureRmVmss -PerformMaintenance -ResourceGroupName $rgname -VMScaleSetName $vmssName -InstanceId $id; } `
1703+
"since the Subscription of this VM is not eligible";
1704+
1705+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1706+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1707+
1708+
Assert-ThrowsContains { Set-AzureRmVmssVM -PerformMaintenance -ResourceGroupName $rgname -VMScaleSetName $vmssName -InstanceId $id; } `
1709+
"since the Subscription of this VM is not eligible";
1710+
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1711+
$vmssVMs = Get-AzureRmVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssName;
1712+
}
1713+
finally
1714+
{
1715+
# Cleanup
1716+
Clean-ResourceGroup $rgname
1717+
}
1718+
}

src/ResourceManager/Compute/Commands.Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineRunCommandTests/TestVirtualMachineGetRunCommand.json

Lines changed: 52 additions & 37 deletions
Large diffs are not rendered by default.

src/ResourceManager/Compute/Commands.Compute.Test/SessionRecords/Microsoft.Azure.Commands.Compute.Test.ScenarioTests.VirtualMachineScaleSetTests/TestVirtualMachineScaleSetRedeploy.json

Lines changed: 6315 additions & 0 deletions
Large diffs are not rendered by default.

src/ResourceManager/Compute/Commands.Compute/Generated/VirtualMachineRunCommand/VirtualMachineRunCommandGetMethod.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public override void ExecuteCmdlet()
125125
{
126126
ExecuteClientAction(() =>
127127
{
128-
string location = this.Location;
128+
string location = this.Location.Canonicalize();
129129
string commandId = this.CommandId;
130130

131131
if (!string.IsNullOrEmpty(location) && !string.IsNullOrEmpty(commandId))

src/ResourceManager/Compute/Commands.Compute/Generated/VirtualMachineScaleSet/Config/NewAzureRmVmssConfigCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ private void Run()
416416
{
417417
Overprovision = this.MyInvocation.BoundParameters.ContainsKey("Overprovision") ? this.Overprovision : (bool?) null,
418418
SinglePlacementGroup = this.MyInvocation.BoundParameters.ContainsKey("SinglePlacementGroup") ? this.SinglePlacementGroup : (bool?) null,
419-
ZoneBalance = this.ZoneBalance.IsPresent,
419+
ZoneBalance = this.ZoneBalance.IsPresent ? true : (bool?) null,
420420
PlatformFaultDomainCount = this.MyInvocation.BoundParameters.ContainsKey("PlatformFaultDomainCount") ? this.PlatformFaultDomainCount : (int?) null,
421421
Zones = this.MyInvocation.BoundParameters.ContainsKey("Zone") ? this.Zone : null,
422422
Location = this.MyInvocation.BoundParameters.ContainsKey("Location") ? this.Location : null,

src/ResourceManager/Compute/Commands.Compute/Generated/VirtualMachineScaleSet/Config/NewAzureRmVmssIpConfigCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ private void Run()
136136
}
137137

138138
// PublicIPAddressConfigurationIdleTimeoutInMinutes
139-
if (this.PublicIPAddressConfigurationIdleTimeoutInMinutes != null)
139+
if (this.MyInvocation.BoundParameters.ContainsKey("PublicIPAddressConfigurationIdleTimeoutInMinutes"))
140140
{
141141
if (vIpConfigurations.PublicIPAddressConfiguration == null)
142142
{

src/ResourceManager/Compute/Commands.Compute/Generated/VirtualMachineScaleSet/VirtualMachineScaleSetReimageMethod.cs

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,20 @@ public override void ExecuteCmdlet()
137137
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
138138
WriteObject(psObject);
139139
}
140+
else if (this.ParameterSetName.Equals("RedeployMethodParameter"))
141+
{
142+
var result = VirtualMachineScaleSetsClient.Redeploy(resourceGroupName, vmScaleSetName, instanceIds);
143+
var psObject = new PSOperationStatusResponse();
144+
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
145+
WriteObject(psObject);
146+
}
147+
else if (this.ParameterSetName.Equals("PerformMaintenanceMethodParameter"))
148+
{
149+
var result = VirtualMachineScaleSetsClient.PerformMaintenance(resourceGroupName, vmScaleSetName, instanceIds);
150+
var psObject = new PSOperationStatusResponse();
151+
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
152+
WriteObject(psObject);
153+
}
140154
else
141155
{
142156
var result = VirtualMachineScaleSetsClient.Reimage(resourceGroupName, vmScaleSetName, instanceIds);
@@ -150,37 +164,20 @@ public override void ExecuteCmdlet()
150164
}
151165

152166
[Parameter(
153-
ParameterSetName = "DefaultParameter",
154-
Position = 1,
155-
Mandatory = true,
156-
ValueFromPipelineByPropertyName = true)]
157-
[Parameter(
158-
ParameterSetName = "FriendMethod",
159167
Position = 1,
160168
Mandatory = true,
161169
ValueFromPipelineByPropertyName = true)]
162170
[ResourceManager.Common.ArgumentCompleters.ResourceGroupCompleter()]
163171
public string ResourceGroupName { get; set; }
164172

165173
[Parameter(
166-
ParameterSetName = "DefaultParameter",
167-
Position = 2,
168-
Mandatory = true,
169-
ValueFromPipelineByPropertyName = true)]
170-
[Parameter(
171-
ParameterSetName = "FriendMethod",
172174
Position = 2,
173175
Mandatory = true,
174176
ValueFromPipelineByPropertyName = true)]
175177
[Alias("Name")]
176178
public string VMScaleSetName { get; set; }
177179

178180
[Parameter(
179-
ParameterSetName = "DefaultParameter",
180-
Position = 3,
181-
ValueFromPipelineByPropertyName = true)]
182-
[Parameter(
183-
ParameterSetName = "FriendMethod",
184181
Position = 3,
185182
ValueFromPipelineByPropertyName = true)]
186183
public string [] InstanceId { get; set; }
@@ -195,6 +192,16 @@ public override void ExecuteCmdlet()
195192
Mandatory = true)]
196193
public SwitchParameter ReimageAll { get; set; }
197194

195+
[Parameter(
196+
ParameterSetName = "RedeployMethodParameter",
197+
Mandatory = true)]
198+
public SwitchParameter Redeploy { get; set; }
199+
200+
[Parameter(
201+
ParameterSetName = "PerformMaintenanceMethodParameter",
202+
Mandatory = true)]
203+
public SwitchParameter PerformMaintenance { get; set; }
204+
198205
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
199206
public SwitchParameter AsJob { get; set; }
200207
}

src/ResourceManager/Compute/Commands.Compute/Generated/VirtualMachineScaleSetVM/VirtualMachineScaleSetVMReimageMethod.cs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,20 @@ public override void ExecuteCmdlet()
132132
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
133133
WriteObject(psObject);
134134
}
135+
else if (this.ParameterSetName.Equals("RedeployMethodParameter"))
136+
{
137+
var result = VirtualMachineScaleSetVMsClient.Redeploy(resourceGroupName, vmScaleSetName, instanceId);
138+
var psObject = new PSOperationStatusResponse();
139+
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
140+
WriteObject(psObject);
141+
}
142+
else if (this.ParameterSetName.Equals("PerformMaintenanceMethodParameter"))
143+
{
144+
var result = VirtualMachineScaleSetVMsClient.PerformMaintenance(resourceGroupName, vmScaleSetName, instanceId);
145+
var psObject = new PSOperationStatusResponse();
146+
ComputeAutomationAutoMapperProfile.Mapper.Map<Azure.Management.Compute.Models.OperationStatusResponse, PSOperationStatusResponse>(result, psObject);
147+
WriteObject(psObject);
148+
}
135149
else
136150
{
137151
var result = VirtualMachineScaleSetVMsClient.Reimage(resourceGroupName, vmScaleSetName, instanceId);
@@ -145,38 +159,20 @@ public override void ExecuteCmdlet()
145159
}
146160

147161
[Parameter(
148-
ParameterSetName = "DefaultParameter",
149-
Position = 1,
150-
Mandatory = true,
151-
ValueFromPipelineByPropertyName = true)]
152-
[Parameter(
153-
ParameterSetName = "FriendMethod",
154162
Position = 1,
155163
Mandatory = true,
156164
ValueFromPipelineByPropertyName = true)]
157165
[ResourceManager.Common.ArgumentCompleters.ResourceGroupCompleter()]
158166
public string ResourceGroupName { get; set; }
159167

160168
[Parameter(
161-
ParameterSetName = "DefaultParameter",
162-
Position = 2,
163-
Mandatory = true,
164-
ValueFromPipelineByPropertyName = true)]
165-
[Parameter(
166-
ParameterSetName = "FriendMethod",
167169
Position = 2,
168170
Mandatory = true,
169171
ValueFromPipelineByPropertyName = true)]
170172
[Alias("Name")]
171173
public string VMScaleSetName { get; set; }
172174

173175
[Parameter(
174-
ParameterSetName = "DefaultParameter",
175-
Position = 3,
176-
Mandatory = true,
177-
ValueFromPipelineByPropertyName = true)]
178-
[Parameter(
179-
ParameterSetName = "FriendMethod",
180176
Position = 3,
181177
Mandatory = true,
182178
ValueFromPipelineByPropertyName = true)]
@@ -192,6 +188,16 @@ public override void ExecuteCmdlet()
192188
Mandatory = true)]
193189
public SwitchParameter ReimageAll { get; set; }
194190

191+
[Parameter(
192+
ParameterSetName = "RedeployMethodParameter",
193+
Mandatory = true)]
194+
public SwitchParameter Redeploy { get; set; }
195+
196+
[Parameter(
197+
ParameterSetName = "PerformMaintenanceMethodParameter",
198+
Mandatory = true)]
199+
public SwitchParameter PerformMaintenance { get; set; }
200+
195201
[Parameter(Mandatory = false, HelpMessage = "Run cmdlet in the background")]
196202
public SwitchParameter AsJob { get; set; }
197203
}

src/ResourceManager/Compute/Commands.Compute/help/New-AzureRmVM.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
---
1+
---
22
external help file: Microsoft.Azure.Commands.Compute.dll-Help.xml
33
Module Name: AzureRM.Compute
44
ms.assetid: 05E6155D-4F0E-406B-9312-77AD97EF66EE
@@ -15,8 +15,8 @@ Creates a virtual machine.
1515

1616
### SimpleParameterSet (Default)
1717
```
18-
New-AzureRmVM [[-ResourceGroupName] <String>] [[-Location] <String>] -Name <String> -Credential <PSCredential>
19-
[-VirtualNetworkName <String>] [-AddressPrefix <String>] [-SubnetName <String>]
18+
New-AzureRmVM [[-ResourceGroupName] <String>] [[-Location] <String>] [[-Zone] <String[]>] -Name <String>
19+
-Credential <PSCredential> [-VirtualNetworkName <String>] [-AddressPrefix <String>] [-SubnetName <String>]
2020
[-SubnetAddressPrefix <String>] [-PublicIpAddressName <String>] [-DomainNameLabel <String>]
2121
[-AllocationMethod <String>] [-SecurityGroupName <String>] [-OpenPorts <Int32[]>] [-ImageName <String>]
2222
[-Size <String>] [-AvailabilitySetName <String>] [-AsJob] [-DataDiskSizeInGb <Int32[]>]
@@ -549,6 +549,18 @@ Accept wildcard characters: False
549549
### -Zone
550550
Specifies the zone list of the virtual machine.
551551

552+
```yaml
553+
Type: String[]
554+
Parameter Sets: SimpleParameterSet
555+
Aliases:
556+
557+
Required: False
558+
Position: 3
559+
Default value: None
560+
Accept pipeline input: False
561+
Accept wildcard characters: False
562+
```
563+
552564
```yaml
553565
Type: String[]
554566
Parameter Sets: DefaultParameterSet
@@ -557,7 +569,7 @@ Aliases:
557569
Required: False
558570
Position: 3
559571
Default value: None
560-
Accept pipeline input: True (ByPropertyName)
572+
Accept pipeline input: False
561573
Accept wildcard characters: False
562574
```
563575

0 commit comments

Comments
 (0)