Hinweis: # Befehlszeilen-Tag bedeutet nicht nur Batch-Datei. Ich akzeptiere ein PowerShell-Skript oder ein frei verfügbares Dienstprogramm, das über die Befehlszeile gestartet werden kann und seine Arbeit unbeaufsichtigt beendet.
tl; dr
Wie kann man Firewall-Regeln unbeaufsichtigt genau so umwandeln, dass die GUI es unter Windows Vista auf Windows 10 einer beliebigen Schnittstellensprache (Anzeige) ausdrückt?
Ausarbeiten
Diese Frage ähnelt # 786383 , ist aber nicht dieselbe.
Grundsätzlich, weil die Antwort nicht gut für mich ist:
set rule group="remote desktop" new enable=Yes
öffnet Port 3389 für öffentliche Netzwerke, und das möchte ich vermeiden. Auch verschiedene Windows-Sprachen haben unterschiedliche Gruppennamen, aber ich brauche eine universelle Lösung.netsh firewall set service type = remotedesktop mode = enable
funktioniert auch bei mir nicht: es ist seit win7 veraltet und erlaubt rdp nur für das aktuelle netzwerk (wenn Sie in einem öffentlichen Netzwerk sind, wird 3389 für öffentliche Netzwerke geöffnet und funktioniert danach nicht mehr in privaten Netzwerken).
Beachten Sie, dass es vor der Aktivierung von RDP über die GUI nur eine Regel pro Protokoll für RDP gibt. Wenn RDP jedoch über die GUI aktiviert wird, wird der Port nur für private Netzwerke und Domänennetzwerke geöffnet, und die Regeln werden dafür aufgeteilt. Nach dem Aktivieren gibt es 4 Regeln in Windows 8+ und 2 Regeln (kein UDP) in Windows XP, Vista und 7.
Umgehung, die ich derzeit verwende, fügt meine eigenen Regeln hinzu:
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (TCP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [TCP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=tcp
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (UDP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [UDP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=udp
Das ist jedoch schlecht, da sie (im Gegensatz zu Standardprogrammen) vom Benutzer geändert werden können, keine Gruppe haben (um mit anderen Skripten zu arbeiten) und nicht automatisch deaktiviert werden, wenn RDP über die GUI deaktiviert wird.
Screenshots
Firewall-Regeln vor dem erstmaligen Aktivieren von RDP über die GUI * **
Gleiche Regeln, wenn RDP über die GUI aktiviert ist (Status, den ich erhalten möchte):
Und nach dem Deaktivieren von RDP in der GUI:
Ich werde die ganze Geschichte dieses Kampfes mit Windows-Befehlszeilenprogrammen nicht nacherzählen, bis jemand danach fragt. Hier ist diese Geschichte auf Russisch .
quelle
Antworten:
oder
quelle
netsh firewall
ist veraltet (seit win7), funktioniert nicht in Win10 und erlaubt rdp nur für das aktuelle Netzwerk (wenn Sie in einem öffentlichen Netzwerk sind, ist rdp für öffentliche Netzwerke zulässig und funktioniert danach nicht mehr in privaten Netzwerken). Dies ist in der Originalgeschichte vermerkt, ich dachte nur, dass es nicht wert ist, in Frage gestellt zu werden. Ich werde diesen Fehler beheben.netsh firewall
funktioniert immer noch in Windows 10 (auf Pro getestet).Wenn ich die Frage richtig verstehe, bekommst du das, was du willst. Dies ist PowerShell:
Dadurch werden die Regeln herausgefiltert und die korrekten Regelnamen ermittelt, die unabhängig von der Sprache sind. Dazu wird nach Port 3389 gefiltert und die Regel für "Domänen- und private Netzwerke" ermittelt.
Profiles -eq 3
ist die Bitmap-Maske für private und Domain-Netzwerke. Die Referenz finden Sie hier:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366303(v=vs.85).aspx
Wobei 1 (Domänennetzwerke) + 2 (private Netzwerke) = 3
Hier ist der MSDN-Link, über den ich den Rest herausgefunden habe:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365309(v=vs.85).aspx
Und so habe ich herausgefunden, welche Eigenschaften und Methoden für die anderen Objekte gelten:
quelle
)}
Wenn Sie nach einer PowerShell-Lösung suchen, können Sie Folgendes verwenden:
quelle
Die folgenden cmd-Befehle ..
und
reichen nicht aus, um den Remotedesktop zu aktivieren.
Ich musste dieses hinzufügen, damit es funktioniert (Client: Windows 10).
quelle