次のコマンドでファイルとプリンターの共有ファイアウォールルールを有効にできることを知っています。
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes
ただし、すべてのプロファイルでファイルとプリンタの共有が有効になります。
プライベートプロファイル、つまりWindows PC /ラップトップが自宅または職場のネットワークに接続されている場合にのみ有効にします。私は特に、パブリックネットワークに接続されているラップトップではオンにしないようにしています。理想的には、パブリックネットワークではネットワーク検出をオフにする必要があります。
私はもう試した
netsh advfirewall firewall set rule group=”File and Printer Sharing” profile=private new enable=Yes
「プロファイル」スイッチは拒否されます。では、ファイアウォールルールを選択的に適用するにはどうすればよいですか?
任意の入力のための多くのthx。
プリセットルールをアクティブ化しています。プリセットルールにはProfile=any
初期化。
まずこれを試してください:
netsh advfirewall firewall set rule group="File and Printer Sharing" new profile=private
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-In)" dir=in profile=public|private|domain new enable=Yes|No
3つのプロファイルを同時に設定するには、以下を使用します。
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
管理者として実行することを忘れないでください。
サブジェクトを巡って、ローカル言語名を使用しても機能しないことがまれにあります。ポーランド語Udostępnianie plików i drukarek (SMB — ruch przychodzący)
= File and Printer Sharing (SMB-In)
。これはnetshでのUTF-8処理と関係があると思います。UTF名のwifiネットワークへの接続にnetshを使用しても動作しない場合があるという報告があります。
そのような場合は、PowerShellのSet-NetFirewallRule
および言語に依存しない "Name"パラメータ(この場合はFPS-SMB-In-TCP
)。使用する Get-NetFirewallRule
コマンドを使用して、ルールのすべての正しい名前を取得します。
@ Mulder's answer に基づいて構築し、プライベートモードで有効にするには、「セキュリティが強化されたWindows Defender Firewall」の各ルールに対して具体的に設定する必要があります。
& "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
コマンドには管理者権限が必要です。
これらのコマンドは、ファイルとプリンターの共有表示グループの受信ファイアウォールルールを取得し(他の注記によると、これはご使用の言語にローカライズされる場合があります)、プライベートプロファイルに一致するものでフィルターします(必要に応じて、これをパブリックまたはドメインに変更できます)代わりにこれらのルールを変更してください)、それらを有効または無効にします。
これを管理者特権のPowerShellプロンプトに入力します。
Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private
Windows 10 1703で動作しました