diff --git a/src/Network/Network/ChangeLog.md b/src/Network/Network/ChangeLog.md index a8a0bfe764a9..9a63811f9026 100644 --- a/src/Network/Network/ChangeLog.md +++ b/src/Network/Network/ChangeLog.md @@ -29,6 +29,9 @@ * Added support for `DefaultOutboundAccess` property in `Set-AzVirtualNetworkSubnetConfig` command * Added support for `EnabledFilteringCriteria` property in `New-AzNetworkWatcherFlowLog` and `Set-AzNetworkWatcherFlowLog` commands * Added support of `UserAssignedIdentityId` Property in `New-AzNetworkWatcherFlowLog` and `Set-AzNetworkWatcherFlowLog` commands +* Added support of `DestinationIPAddress` property in `New-AzPrivateLinkService` command + - `LoadBalancerFrontendIpConfiguration` is not a mandatory parameter anymore. + - The user can provide either `LoadBalancerFrontendIpConfiguration` or `DestinationIPAddress`. ## Version 7.8.0 * Added new cmdlets to support Save & Commit (AzureFirewallPolicy draft) diff --git a/src/Network/Network/Models/PSPrivateLinkService.cs b/src/Network/Network/Models/PSPrivateLinkService.cs index a96ae26cac20..2f4a5040ecb7 100644 --- a/src/Network/Network/Models/PSPrivateLinkService.cs +++ b/src/Network/Network/Models/PSPrivateLinkService.cs @@ -39,6 +39,8 @@ public partial class PSPrivateLinkService : PSTopLevelResource public PSExtendedLocation ExtendedLocation { get; set; } + public string DestinationIPAddress { get; set; } + [JsonIgnore] public string LoadBalancerFrontendIpConfigurationsText { diff --git a/src/Network/Network/Network.format.ps1xml b/src/Network/Network/Network.format.ps1xml index 275632816692..3b1298d2c2d3 100644 --- a/src/Network/Network/Network.format.ps1xml +++ b/src/Network/Network/Network.format.ps1xml @@ -5664,6 +5664,10 @@ ExtendedLocationText + + + DestinationIPAddress + diff --git a/src/Network/Network/PrivateLinkService/NewAzurePrivateLinkServiceCommand.cs b/src/Network/Network/PrivateLinkService/NewAzurePrivateLinkServiceCommand.cs index 5b6bc06fc712..9a22f040347e 100644 --- a/src/Network/Network/PrivateLinkService/NewAzurePrivateLinkServiceCommand.cs +++ b/src/Network/Network/PrivateLinkService/NewAzurePrivateLinkServiceCommand.cs @@ -53,16 +53,16 @@ public class NewAzurePrivateLinkService : PrivateLinkServiceBaseCmdlet [Parameter( Mandatory = true, ValueFromPipelineByPropertyName = true, - HelpMessage = "The front end ip configuration")] + HelpMessage = "The ip configuration")] [ValidateNotNullOrEmpty] - public PSFrontendIPConfiguration[] LoadBalancerFrontendIpConfiguration { get; set; } + public PSPrivateLinkServiceIpConfiguration[] IpConfiguration { get; set; } [Parameter( - Mandatory = true, + Mandatory = false, ValueFromPipelineByPropertyName = true, - HelpMessage = "The ip configuration")] + HelpMessage = "The front end ip configuration")] [ValidateNotNullOrEmpty] - public PSPrivateLinkServiceIpConfiguration[] IpConfiguration { get; set; } + public PSFrontendIPConfiguration[] LoadBalancerFrontendIpConfiguration { get; set; } [Parameter( Mandatory = false, @@ -104,6 +104,12 @@ public class NewAzurePrivateLinkService : PrivateLinkServiceBaseCmdlet HelpMessage = "Run cmdlet in the background")] public SwitchParameter AsJob { get; set; } + [Parameter( + Mandatory = false, + ValueFromPipelineByPropertyName = true, + HelpMessage = "The destination IP address")] + public string DestinationIPAddress { get; set; } + private PSPrivateLinkService CreatePSPrivateLinkService() { var psPrivateLinkService = new PSPrivateLinkService @@ -135,6 +141,8 @@ private PSPrivateLinkService CreatePSPrivateLinkService() psPrivateLinkService.ExtendedLocation = new PSExtendedLocation(this.EdgeZone); } + psPrivateLinkService.DestinationIPAddress = this.DestinationIPAddress; + var plsModel = NetworkResourceManagerProfile.Mapper.Map(psPrivateLinkService); plsModel.Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true); diff --git a/src/Network/Network/help/New-AzPrivateLinkService.md b/src/Network/Network/help/New-AzPrivateLinkService.md index 229dfe26d3b2..33c9842e7494 100644 --- a/src/Network/Network/help/New-AzPrivateLinkService.md +++ b/src/Network/Network/help/New-AzPrivateLinkService.md @@ -14,10 +14,10 @@ Creates a private link service ``` New-AzPrivateLinkService -Name -ResourceGroupName -Location - -LoadBalancerFrontendIpConfiguration - -IpConfiguration [-Visibility ] [-AutoApproval ] - [-EnableProxyProtocol] [-EdgeZone ] [-Tag ] [-Force] [-AsJob] - [-DefaultProfile ] [-WhatIf] [-Confirm] [] + -IpConfiguration [-Visibility ] [-AutoApproval ] + [-DestinationIPAddress ] [-EnableProxyProtocol] [-EdgeZone ] [-Tag ] [-Force] [-AsJob] + [-DefaultProfile ] [-LoadBalancerFrontendIpConfiguration ] + [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -27,7 +27,7 @@ The **New-AzPrivateLinkService** cmdlet creates a private link service ### Example 1 -The following example creates a private link service. +The following example creates a private link service with a load balancer. ```powershell $vnet = Get-AzVirtualNetwork -ResourceName 'myvnet' -ResourceGroupName 'myresourcegroup' @@ -40,6 +40,21 @@ $lb = New-AzLoadBalancer -Name 'MyLoadBalancer' -ResourceGroupName 'myresourcegr New-AzPrivateLinkService -Name 'mypls' -ResourceGroupName myresourcegroup -Location "West US" -LoadBalancerFrontendIpConfiguration $frontend -IpConfiguration $IPConfig ``` +### Example 2 + +The following example creates a private link service with destinationIPAddress. + +```powershell +$vnet = Get-AzVirtualNetwork -ResourceName 'myvnet' -ResourceGroupName 'myresourcegroup' +# View the results of $vnet and change 'mysubnet' in the following line to the appropriate subnet name. +$subnet = $vnet | Select-Object -ExpandProperty subnets | Where-Object Name -eq 'mysubnet' +$IPConfig1 = New-AzPrivateLinkServiceIpConfig -Name 'IP-Config1' -Subnet $subnet -PrivateIpAddress '10.0.0.5' -Primary +$IPConfig2 = New-AzPrivateLinkServiceIpConfig -Name 'IP-Config2' -Subnet $subnet -PrivateIpAddress '10.0.0.6' +$IPConfig3 = New-AzPrivateLinkServiceIpConfig -Name 'IP-Config3' -Subnet $subnet -PrivateIpAddress '10.0.0.7' +$IPConfigs = @($IPConfig1, $IPConfig2, $IPConfig3) +New-AzPrivateLinkService -Name 'mypls' -ResourceGroupName myresourcegroup -Location "West US" -IpConfiguration $IPConfigs -DestinationIPAddress '192.168.0.5' +``` + ## PARAMETERS ### -AsJob @@ -87,6 +102,21 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -DestinationIPAddress +The destination IP address of the private link service. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: True (ByPropertyName) +Accept wildcard characters: False +``` + ### -EdgeZone The edge zone of the private link service @@ -155,7 +185,7 @@ Type: Microsoft.Azure.Commands.Network.Models.PSFrontendIPConfiguration[] Parameter Sets: (All) Aliases: -Required: True +Required: False Position: Named Default value: None Accept pipeline input: True (ByPropertyName)