前書き
あるときWindows 10 の端末から、nasneの共有フォルダにアクセス出来なくなりました。
具体的には
- スマホからはアクセス可能
- PCでもメディアサーバーは見える
- IPアドレス直打ちでnasne HOMEにアクセス可能
- エクスプローラーにIPアドレスやnasneの名前を入れてもアクセス不可
という状況でした。
そのときは以下のページを参考に、
「Windowsの機能の有効化または無効化」から
「SMB 1.0/CIFS ファイル共有のサポート」を有効化して、無事共有フォルダにアクセスできるようになりました、
Windows10からnasneの共有フォルダにアクセスする(180811削除)
Windows10からnasneの共有フォルダにアクセスする(キャッシュ)
PowerShellから設定
上記の設定をしたものの、端末移行時などに忘れそう……と思っていたところ、PowerShellから設定できることがわかったため、スクリプトとしてみました。
作成環境
Windows 10 Pro 64bit
Name Value
---- -----
PSVersion 5.1.17134.165
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.165
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
スクリプト
Get-WindowsOptionalFeature コマンドレットで設定状況の確認
Enable-WindowsOptionalFeature コマンドレットで機能の有効化が行えるため
SMB1Protocol
・SMB1Protocol-Client
・SMB1Protocol-Server
の3つの機能の確認・有効化を行います。
また、上記コマンドレットの実行にはPowerShellを管理者権限で起動しておく必要があります。
Online
スイッチでローカルマシンを対象にし、FeatureName
に機能の名前を指定します。
Get-WindowsOptionalFeature
のFeatureName
は単一文字列しか受け取れませんが、
Enable-WindowsOptionalFeature
はFeatureName
に文字列の配列を受け取れます。
今回はEnable-WindowsOptionalFeature
のパラメータセットに合わせてスプラッティング用のhashtableを定義し、それを使ってパラメータを指定しています。
# for access nasne file server
[hashtable]$param = @{
Online = $true
FeatureName = [string[]]@(
'SMB1Protocol'
'SMB1Protocol-Client'
'SMB1Protocol-Server'
)
}
# 設定状況の確認
$param.FeatureName | Get-WindowsOptionalFeature -Online -FeatureName {$_}
# 機能を有効化
Enable-WindowsOptionalFeature @param
参考
「SMB 1.0/CIFS ファイル共有のサポート」が無効化されたのは、以下の脆弱性があったためだと思われます。
必要が無ければ無効化のままの方が無難かもしれません。