@@ -266,7 +266,6 @@ function New-DbaFirewallRule {
266266 process {
267267 foreach ($instance in $SqlInstance ) {
268268 $rules = @ ( )
269- $programNeeded = $false
270269 $browserNeeded = $false
271270 if ($PSBoundParameters.Type ) {
272271 $browserOptional = $false
@@ -318,17 +317,14 @@ function New-DbaFirewallRule {
318317 # Try to get the program path for executable-based rule
319318 try {
320319 $service = Get-DbaService - ComputerName $instance.ComputerName - InstanceName $instance.InstanceName - Credential $Credential - Type Engine - EnableException
321- $programPath = $service.BinaryPath -replace ' ^"?(.*sqlservr.exe).*$' , ' $1'
322- if ($programPath ) {
323- $rule.Config.Program = $programPath
324- Write-Message - Level Verbose - Message " Creating program-based firewall rule targeting: $programPath "
320+ if ($service.BinaryPath -match ' ^"?(.+sqlservr\.exe)' ) {
321+ $rule.Config.Program = $Matches [1 ]
322+ Write-Message - Level Verbose - Message " Creating program-based firewall rule targeting: $ ( $Matches [1 ]) "
325323 } else {
326324 Write-Message - Level Warning - Message " Could not determine executable path for instance $instance . Falling back to port-based rule."
327- $programNeeded = $false
328325 }
329326 } catch {
330327 Write-Message - Level Warning - Message " Failed to get service information for instance $instance . Falling back to port-based rule."
331- $programNeeded = $false
332328 }
333329
334330 # If we couldn't get the program path, fall back to port-based rule
@@ -380,11 +376,10 @@ function New-DbaFirewallRule {
380376 # Try to get the SQL Browser service executable path
381377 try {
382378 $browserService = Get-DbaService - ComputerName $instance.ComputerName - Credential $Credential - Type Browser - EnableException | Select-Object - First 1
383- $browserPath = $browserService.BinaryPath -replace ' ^"?(.*sqlbrowser.exe).*$' , ' $1'
384- if ($browserPath ) {
385- $rule.Config.Program = $browserPath
379+ if ($browserService.BinaryPath -match ' ^"?(.+sqlbrowser\.exe)' ) {
380+ $rule.Config.Program = $Matches [1 ]
386381 $rule.Config.Protocol = ' Any'
387- Write-Message - Level Verbose - Message " Creating program-based firewall rule for Browser targeting: $browserPath "
382+ Write-Message - Level Verbose - Message " Creating program-based firewall rule for Browser targeting: $ ( $Matches [ 1 ] ) "
388383 } else {
389384 Write-Message - Level Warning - Message " Could not determine SQL Browser executable path. Falling back to port-based rule."
390385 $rule.Config.LocalPort = ' 1434'
0 commit comments