#3.1 Update zu meinem Powershell Skript „Öffnen von Firewall Port“
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Nachdem ich meinen Beitrag zum Thema „Öffnen der Firewall Ports mit Powershell“ Ende Oktober veröffentlicht hatte, habe ich mein Skript nochmals überarbeitet. Der SQL Server und seine Features wie z.B. die Analysis Services haben eigene Ports, welche auch nur geöffnet werden müssen, wenn die jeweiligen Features installiert sind.
Grundlage für meine weiteren Versuche ist der MSDN-Beitrag zu diesem Thema und der eigene Wunsch nach mehr Flexibilität beim Erstellen von Regeln.
Flexibilität durch eigene Powershell-Funktion „GET SQLServices for Firewall“
Ich habe also meine bisherige Funktion aufgesplittet, so dass ich nicht mehr wie bisher stur (per Copy&Paste) die Regel erstelle. Jetzt habe ich eine Funktion gebaut, welche alle relevanten SQL Server Dienste ermittelt, um diese dann individuell freizuschalten. Also mein erster Schritt ist die Analyse der SQL Server Installation:
function GET_SQLServices_for_Firewall($SQLServerTCPPort) {
# TCP = 6, UDP = 17
Write-Host "Opening Firewall ports for this Instance"
# General Ports
OpenFirewallPorts 4022 6 "SQL Service Broker"
OpenFirewallPorts 1434 17 "SQL Browser"
$Services=get-wmiobject -class win32_service | where {$_.DisplayName -like '*SQL*'} | select-object DisplayName
foreach ( $service in $Services ) {
# DB-Engine Ports
if ($Service.DisplayName -like '*SQL Server (*') {
OpenFirewallPorts $SQLServerTCPPort 6 "SQL Server"
}
# SSAS Ports
if ($Service.DisplayName -like '*Analysis Services (*') {
OpenFirewallPorts 2383 6 "SQL - Analysis Services"
OpenFirewallPorts 2382 6 "SQL - Analysis Services Browserservice"
}
}
}
Wie man nun erkennen kann, rufe ich nun eine weitere Funktion auf mit der ich die Verwaltung der Windows Firewall übernehme. Die eigentlichen Teile meines bisherigen Skriptes habe ich somit relativ unverändert gelassen, nur „eingedampft“ und variabler gestaltet.
Ich rufe also die eigentliche Arbeitsfunktion mit entsprechenden Parametern auf, um den jeweiligen Port, das Protokoll und eine sprechende Beschreibung zu übermitteln.
function OpenFirewallPorts ([int]$Port, [int]$Protocol, [string]$FirewallRuleDescsription) {
if ($Protocol -eq 6) {$Protocol_String = "TCP"}
if ($Protocol -eq 17) {$Protocol_String = "UDP"}
Try {
Write-Host "Opening Firewall on $Protocol_String Port $Port"
$port1 = New-Object -ComObject HNetCfg.FWOpenPort
$port1.Port = $SQLServerTCPPort
$port1.Name = $FirewallRuleDescsription + "(" + $Protocol_String + " " + $Port + ") " + $InstanceName
$port1.Enabled = $true
$port1.Protocol = $Protocol
$fwMgr = New-Object -ComObject HNetCfg.FwMgr
$profiledomain=$fwMgr.LocalPolicy.GetProfileByType(0)
$profiledomain.GloballyOpenPorts.Add($port1)
Write-Host "[INFO] Successfully opened Firewall on $Protocol_String Port $Port." -ForegroundColor Green
}
Catch {
Write-Host "[ERROR] Opening Firewall on $Protocol_String Port $Port failed." -ForegroundColor Red
}
}
Für mich und meine Zwecke funktioniert das soweit ganz gut und ist natürlich bei Bedarf individuell anpassbar. Wenn man als Beispiel einen weiteren Listener im SQL Server konfiguriert, dann könnte man dies ebenfalls ermitteln und in der Windows Firewall freischalten. Grob => Invoke-SQLcmd „Get Listener Port“ => OpenFirewallPorts newListenerPortNumber 6 „Additional SQL Server Listener“
Für mich bedeutet das Niederschreiben und Erläutern der einzelnen Schritte und Veränderungen auch einen Lernprozess. Wenn jemand Anmerkungen oder Verbesserungen für mich hat, freue ich mich sehr darüber. „Please share your knowledge“ 😉
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Björn arbeitet auch weiterhin aus Mexiko als Senior Consultant – Microsoft Data Platform und Cloud für die Kramer&Crew in Köln. Auch der Community bleibt er aus der neuen Heimat treu, er engagiert sich auf Data Saturdays oder in unterschiedlichen Foren. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure SQL für Science-Fiction, Backen 😉 und Radfahren.
Amazon.com Empfehlungen
Damit ich auch meine Kosten für den Blog ein wenig senken kann, verwende ich auf diese Seite das Amazon.com Affiliate Programm, so bekomme ich - falls ihr ein Produkt über meinen Link kauft, eine kleine Provision (ohne zusätzliche Kosten für euch!).
Auto Amazon Links: Keine Produkte gefunden.