Я знаю, что следующий cmd может включить правило брандмауэра для совместного использования файлов и печати:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
Но он включает общий доступ к файлам и принтерам для всех профилей.
Я хотел бы включить его только для частного профиля, то есть когда ПК / ноутбуки с Windows подключены к домашней или рабочей сети. Я особенно стараюсь не включать его для ноутбуков, подключенных к общедоступной сети. В идеале обнаружение сети должно быть отключено для общедоступной сети.
я пробовал
netsh advfirewall firewall set rule group=”File and Printer Sharing” profile=private new enable=Yes
и переключатель «профиль» отклонен. Итак, как я могу применить правило брандмауэра выборочно?
много спасибо за любой ввод ..
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-In)" dir=in profile=public|private|domain new enable=Yes|No
Чтобы установить три профиля одновременно, используйте :
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-In)" dir=in new enable=Yes
Название правила необходимо изменить на вашем местном языке, например :
netsh advfirewall firewall set rule name="檔案及印表機共用 (SMB-In)" dir=in profile=private new enable=Yes
Не забудьте запустить от имени администратора.
Вы активируете предустановленное правило, и я предполагаю, что предустановленное правило Profile=any
в этом.
Попробуйте сначала:
netsh advfirewall firewall set rule group="File and Printer Sharing" new profile=private
Обходя тему, бывают редкие случаи, когда использование названий на местном языке не работает, т.е. Польский Udostępnianie plików i drukarek (SMB — ruch przychodzący)
знак равно File and Printer Sharing (SMB-In)
. Я считаю, что это как-то связано с обработкой UTF-8 в netsh, поскольку есть сообщения о том, что использование netsh для подключения к сетям Wi-Fi с именем UTF иногда тоже не работает.
В этих случаях используйте PowerShell Set-NetFirewallRule
и не зависящий от языка параметр "Имя" (в данном случае FPS-SMB-In-TCP
). Использовать Get-NetFirewallRule
команда, чтобы получить все правильные имена для ваших правил.
Опираясь на @ Ответ Малдера, чтобы включить его в частном режиме, его необходимо настроить отдельно для каждого правила в «Брандмауэре Защитника Windows в режиме повышенной безопасности».
& "C:\WINDOWS\system32\mmc.exe" "C:\WINDOWS\system32\wf.msc"
Выполните следующее в административном окне Powershell.
# Allow access to administrative shares through firewall [Ref: https://serverfault.com/a/968310/336668]
$ruleDisplayNames = "File and Printer Sharing (Echo Request - ICMPv4-In)", `
"File and Printer Sharing (Echo Request - ICMPv6-In)", `
"File and Printer Sharing (LLMNR-UDP-In)", `
"File and Printer Sharing (NB-Datagram-In)", `
"File and Printer Sharing (NB-Name-In)", `
"File and Printer Sharing (SMB-In)", `
"File and Printer Sharing (Spooler Service - RPC)", `
"File and Printer Sharing (Spooler Service - RPC-EPMAP)", `
"File and Printer Sharing (NB-Session-In)"
$rules = Get-NetFirewallRule | Where {$ruleDisplayNames -contains $_.DisplayName -and $_.Profile -ne "Domain"}
# The default rules have the non-Domain rule apply for both Public and
# Private. This updates the rule to be Private only
$rules | Set-NetFirewallRule -Profile Private
# Enable the rule -- i.e. grant the eexception (allow through firewall)
$rules | Enable-NetFirewallRule
Поздно к вечеринке, но именно так вы можете включать и отключать правила брандмауэра для совместного использования файлов и принтеров в частных сетях с помощью Powershell.
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Direction In | where Profile -CLike "*Private*" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Direction In | where Profile -CLike "*Private*" | Disable-NetFirewallRule
Команды требуют прав администратора.
Эти команды получают правила входящего брандмауэра в группе отображения общего доступа к файлам и принтерам (как отмечали другие, это может быть локализовано на ваш язык), фильтруются по правилам, которые соответствуют частному профилю (вы можете изменить его на Public или Domain, если хотите вместо этого измените эти правила), и включает или отключает их.
Введите это в командной строке PowerShell с повышенными привилегиями:
Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private
У меня это сработало на Windows 10 1703