0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows 10でSMB1.0を有効化する方法(PowerShellで有効化/無効化する)

Last updated at Posted at 2020-01-29

Windows 10でSMB1.0を有効化する方法(PowerShellで有効化/無効化する)

GUIで有効化,無効化する方法

【コントロールパネル】⇒【すべてのコントロールパネル項目】⇒【プログラムと起動】⇒【Windowsの機能の有効化または無効化】
image.png
上図の「SMB 1.0/CIFS File Sharing Support」と「SMB 1.0/CFIS Client」にチェックを入れ、導入する。

CLIで有効化,無効化する方法

PowerShellコマンドで以下のとおり。なお、管理者権限が必要なので、下図の「Windows PowerShell(管理者)」を実行すること。
image.png

SMB 1.0/CIFS File Sharing Supportの有効化

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart

SMB 1.0/CIFS Clientの有効化

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client -NoRestart

SMB 1.0/CIFS File Sharing SupportとSMB 1.0/CIFS Clientの無効化

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client -NoRestart

-NoRestartを付与すると再起動をする旨のYes/Noが問われない。ActiveDirectoryグループポリシーのスタートアップスクリプトやシャットダウンスクリプトでは必須オプションと思う。
Yes/Noで停止してしまうとスクリプト同期の場合、ログイン後デスクトップが表示されないことやシャットダウンがいつまで経っても終わらないという悲劇に見舞われる。

有効なのか、無効なのかの確認方法

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

おまけ1

ちょっと管理するクライアントで有効化したい場合に利用したスクリプトです。
古典的なフラグファイルを利用した方法なので、少し情けないけど、参考までに。

# ----------------------------------------------------------------#
# SMB Protocol Enable Script
# ----------------------------------------------------------------#

# ExecutionPolicyを変更する際のError/Warningメッセージの抑止の為、記載するもの
$ErrorActionPreference = "silentlycontinue"

# デバッグ用
Get-ExecutionPolicy

# -Scope指定をした方がいい気がする
#  Scope = Process,CurrentUser,LocalMachine
#  Policy = Restricted,AllSigned,RemoteSigned,Unrestricted,Bypass,Undefined
Set-ExecutionPolicy -Scope Process Bypass

# 古典的なフラグファイル用、ActiveDirectoryのスタートアップスクリプトなので一度だけ実行する時、大概使われている奴
# StartとEndは処理終了具合を見てるだけのもの
[String]$_FLAG_FILE_PATH_="C:\SMBflag_20200130v1.flg";
[String]$_START_FILE_PATH_="C:\SMBflag_20200130v1.start";
[String]$_END_FILE_PATH_="C:\SMBflag_20200130v1.end";

# 処理開始
New-Item $_START_FILE_PATH_ -ItemType File -Force

# スクリプト実行前の状態を見るもの、AD展開時点では不要な処理
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client
[String]$_RET1_ = (Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol).State
Write-Host($_RET1_);
[String]$_RET2_ = (Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client).State
Write-Host($_RET2_);

# フラグファイルがあれば、実行しないの
if (Test-Path $_FLAG_FILE_PATH_) {

    Write-Host("フラグファイルがあるので、処理しません。");

} else {

    # フラグファイルを作る
    New-Item $_FLAG_FILE_PATH_ -ItemType File -Force

    # SMB1Protocolの処理
    if ((Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol).State -eq "Enabled") {
        Write-Host("既にSMB1Protocolは有効化済み。処理無し。");
    } else {
        Write-Host("SMB1Protocolは無効化になっている為、有効化する。");
        Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
    }

    # SMB1Protocol-Clientの処理
    if ((Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client).State -eq "Enabled") {
        Write-Host("既にSMB1Protocol-Clientは有効化済み。処理無し。");
    } else {
        Write-Host("SMB1Protocol-Clientは無効化になっている為、有効化する。");
        Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client -NoRestart
    }

}

# 古い処理、覚書用
# if (Test-Path $_FLAG_FILE_PATH_) {
#   Write-Host("Flag File Found.");
#   exit 0;
# } else {
#    Write-Host("Flag File Not Found.");
#    Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
#    Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client -NoRestart
#    New-Item $_FLAG_FILE_PATH_ -ItemType File -Force
# }

# 処理終了
New-Item $_END_FILE_PATH_ -ItemType File -Force

exit 0;

おまけ2

ActiveDirectoryのグループポリシーで、スタートアップスクリプト等で上記のPowerShellを実行したい場合は、一度WindowsBATから呼び出すとよい。
理由は、PowerShellの実行Policyの制限で、大半が権限無しやリモートコード扱いを受けてて、実行出来ないから。
なので、以下のWindowsBATをグループポリシーに登録して呼び出すとよい。

@echo off
@color 0a
@title Windows 10 SMB1.0 Enable Scripts
echo %~dp0
cd %~dp0
powershell -ExecutionPolicy Bypass -File  [.\Windows10_SMB1.0-Enable.ps1]※ここはPathを変えてね
exit 0

-NoProfileオプションを付けると実行しないので注意。
理由は確認中。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?