見出し画像

Windows update時のio.netの再起動コマンドの自動実行処理

コマンドの処理内容と目的

Windows updateが行われることでPCの強制再起動がかかってしまうため、その際にio.netの再起動を自動的に行うコマンドとなります。

コマンドの利用リスク

・このコマンドを利用していても再起動がうまく処理できない場合が稀にあります。基本的には自分で稼働確認をした上で補助的にお使いください。
・windows PCのログインを自動サインイン設定を行うため、PCが完全に自分の管理下にある場合のみ利用ください。不特定多数の人がいる環境では設定をお勧めしません。
・記事のスクリプトを利用することは全て自己責任で行なってください。

Windows update時の再起動処理

windowsの場合はPowershellを使う前提で書いていきます。

Powershellスクリプトファイルの実行権限の確認と設定

まずPowershellのスクリプトファイルの実行権限があるか確認します。通常Windowsの初期設定では無効になっています。(ウイルスなどに悪意のあるスクリプトを実行させないため)

Powershellを管理者権限で立ち上げてPowershellで以下コマンドを実行してください。

get-executionpolicy

これでRestrictedが返ってきたらがPowershellスクリプトファイルの実行権限が無効な状態です。その場合は以下コマンドで有効に変更します。(管理者権限でPowershell立ち上げている必要があります。)

set-executionpolicy remotesigned

これで再度get-executionpolicyを実行し、RemoteSignedが返ってきたら設定完了です。

スクリプト実行ファイルの作成

Powershellのスクリプト実行ファイルの拡張子は.ps1となります。名前は何でもいいのですが、ここではio-docker.ps1とします。
作成する場所は、いつもio.netの再起動コマンドを打っている場所で良いでしょう。
File name : io-docker.ps1

$dockerProcess = Get-Process "Docker Desktop" -ErrorAction SilentlyContinue

if ($null -eq $dockerProcess) {
    Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"
    Write-Output "Starting Docker Desktop..."

    # Docker Desktopが完全に起動するまで待機
    do {
        Start-Sleep -Seconds 10
        $dockerStatus = docker info 2>&1
    } while ($dockerStatus -like "*Is the docker daemon running?*")
} else {
    Write-Output  "Docker Desktop is already running."
}

# 全てのDockerコンテナを停止し、削除する
docker stop $(docker ps -q)
docker rm $(docker ps -q -a)

# 全てのDockerイメージを削除する
docker rmi $(docker images -q)

# 新しいDockerコンテナを起動する
$url = "https://github.com/ionet-official/io_launch_binaries/raw/main/io_net_launch_binary_windows.exe"
$output = "C:\Users\⚫︎⚫︎⚫︎⚫︎\io_net_launch_binary_windows.exe"

Invoke-WebRequest -Uri $url -OutFile $output


# インタラクティブなプロンプトに自動的に "yes" と答える
$command = "$output --device_id=⚫︎⚫︎⚫︎⚫︎ --user_id=⚫︎⚫︎⚫︎⚫︎ --operating_system='Windows' --usegpus=true --device_name=⚫︎⚫︎⚫︎⚫︎ --token ⚫︎⚫︎⚫︎⚫︎"
echo yes | cmd /c $command

Write-Output "Script execution completed."

※DEVICE_NAME 、DEVICE_ID、USER_ID、TOKEN部分はご自身の起動コマンドのものを入力してください。$output部分は自分のバイナリが保存されている場所の名前を記載してください。

最後の起動スクリプトは念の為、ご自身のダッシュボードのスクリプトをそのままペーストすることをお勧めします。

1.ユーザーの自動ログイン設定

  • Win + R キーを押して「実行」ダイアログを開き、netplwiz を入力して実行します。

  • 上記のコマンドでユーザーアカウントのウィンドウが開きます。ここで、ログインしたいユーザーアカウントを選択し、「ユーザー名とパスワードを入力してこのコンピューターを使用する」のチェックを外します。

もし以下のようにチェックボックスが出ない場合は別の設定が必要となります。

アカウントからサインインオプションを選んで、「セキュリティの向上のため、このデバイスではMicrosoftアカウント用にWindows Helloサインインのみを許可する(推奨)」をオフにするとチェックボックスが出てきます。

  • 適用をクリックすると、ユーザー名とパスワードを求められるので、自動ログインさせたいアカウントの情報を入力します。

以上でWindowsの自動ログインの処理が終わりました。

2.再起動時の自動実行設定

windowsの場合、タスクスケジューラーを使うのが一般的です。

1.タスク スケジューラーの開始: スタートメニューから「タスク スケジューラー」を検索して開きます。

2.基本タスクの作成: 「操作」パネルから「基本タスクの作成」を選択します。
3.タスクの名前と説明の設定: タスクに名前と(オプションで)説明を付けます。

4.トリガーの設定: こちらをログオン時に設定します。そうすることで、ログインした時に処理が自動で実行されるようになります。

5.操作の設定: 「プログラムの開始」を選択し、「プログラム/スクリプト」の欄に powershell を入力します。引数の欄に -ExecutionPolicy Bypass C:¥Users¥soh¥io-docker.ps1のようにスクリプトのフルパスを入力します

-ExecutionPolicy Bypass CUsers¥soh¥io-docker.ps1

↑上記は自分のフルパスを入力してください。-ExecutionPolicy Bypass C:¥Users¥⚫︎⚫︎¥io-docker.ps1 おそらく⚫︎⚫︎部分をご自身の環境の名前に変える必要あります。Userのホームディレクトリ以外にファイルを置いている人はホームディレクトリに持ってくるか、ファイルを置いている場所をpdwコマンドなどで調べてください。


※フルパスが正しく入力できていないことで動かないケースがあります。この記事のコピペでダメだった場合はスペースが入ってないか、¥が大文字になっていないか確認して、最後は手打ちも試すことをお勧めします。

6.タスクの保存: 設定が完了したら、タスクを保存します。
タスクのテスト:タスクを保存した後、タスク スケジューラーでタスクを見つけ、「右クリック」→「実行」を選択して、スクリプトが想定通りに実行されるかテストします。

実行を押して、PowerShellが立ち上がり一連の処理が行われたら設定完了です。

この記事が気に入ったらサポートをしてみませんか?