【アプリ】AutoEnableMobileHotspot

PowerShellScript
制作者マッシャー
最新バージョン1.0.0
最終更新日2025/09/14

概要

AutoEnableMobileHotspot(以下AEMH)は、Windowsの機能であるモバイルホットスポットをONにするPowerShellスクリプトです。
タスク登録しておけば、PCをシャットダウンや再起動するたびにモバイルホットスポットをオンにする手間を省く事ができます。

主な機能

  • Windowsの機能であるモバイルホットスポットをONにする
    以上!

使用方法

  1. ダウンロード
    スクリプトファイルをダウンロードし、わかりやすい場所に配置する
    (例:「C:\」「ドキュメントフォルダ」等)
  2. (必要であれば)タスクスケジューラーに登録する
    1. タスクスケジューラーを開く
      • 「Windowsキー + R」を押して、「ファイル名を指定して実行」を開きます。
      • 「taskschd.msc」と入力してEnterキーを押す。
    2. 基本タスクの作成
      • 右側の操作ペインにある「基本タスクの作成」をクリックします。
    3. タスクの作成ウィザード
      • 名前「モバイルホットスポット自動起動」等わかりやすい名前をつける
      • トリガー:PC起動時に自動でオンにしたい場合、「ログオン時」を選択
      • 操作「プログラムの開始」を選択します。
      • プログラム/スクリプト「powershell.exe」と入力します。
      • 引数の追加の部分に以下のように入力します
        • -ExecutionPolicy Bypass -File “C:\Scripts\AutoEnableMobileHotspot.ps1”
        • ※ “C:\Scripts\AutoEnableMobileHotspot.ps1″の部分は先程スクリプトを保存した場所に書き換えてください
      • 完了です
    4. 管理者権限の設定
      • 作成したタスクは管理者権限で実行する必要があります。
      • タスクスケジューラのライブラリで、今作成したタスク(「モバイルホットスポット自動起動」)を見つけ、右クリックして「プロパティ」を選択。
      • 「全般」タブにある「最上位の特権で実行する」にチェックを入れる。
      • OKを押して設定を保存

ソースコード

大したものでもないのでGitHubに上げるほどでもないと思ったので、
一応中身見れるようにソースコード貼っておきます

# Windowsランタイムアセンブリを読み込む
try {
    Add-Type -AssemblyName System.Runtime.WindowsRuntime
}
catch {
    Write-Error "必要なアセンブリの読み込みに失敗しました。スクリプトを続行できません。"
    exit
}

try {
    # インターネット接続プロファイルからネットワークテザリングマネージャーのインスタンスを取得
    $connectionProfile = [Windows.Networking.Connectivity.NetworkInformation, Windows.Networking.Connectivity, ContentType=WindowsRuntime]::GetInternetConnectionProfile()
    if ($null -eq $connectionProfile) {
        Write-Warning "インターネット接続プロファイルが見つかりません。Wi-Fiまたは有線LANに接続しているか確認してください。"
    }

    $tetheringManager = [Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager]::CreateFromConnectionProfile($connectionProfile)

    # 現在のホットスポットの状態を確認
    $currentState = $tetheringManager.TetheringOperationalState
    Write-Host "現在のホットスポットの状態: $currentState"

    # もしホットスポットが 'Off' の状態であればONにする
    if ($currentState -eq 'Off') {
        Write-Host "モバイルホットスポットを起動しています..."
        
        # 起動命令を出す結果は待たない
        $null = $tetheringManager.StartTetheringAsync()
        
        # 状態が 'On' に変わるのを待つ最大10秒間
        $timeout = 10
        $success = $false
        for ($i = 0; $i -lt $timeout; $i++) {
            Start-Sleep -Seconds 1
            $newState = $tetheringManager.TetheringOperationalState
            if ($newState -eq 'On') {
                Write-Host "モバイルホットスポットが起動しました。現在の状態: $newState"
                $success = $true
                break
            }
            Write-Host "起動待機中... ($($i+1)/$timeout)"
        }

        if (-not $success) {
            Write-Error "ホットスポットの起動を確認できませんでした。タイムアウトしました。"
        }

    } else {
        Write-Host "モバイルホットスポットは既にONか、利用できない状態です。"
    }
}
catch {
    # スクリプト全体でエラーが発生した場合の処理
    Write-Error "スクリプトの実行中に予期せぬエラーが発生しました: $_"
    if ($_.Exception.Message.Contains("0x80070005")) {
        Write-Warning "アクセスが拒否されました (エラーコード: 0x80070005)。このスクリプトは管理者として実行する必要があります。"
    }
}

ダウンロード

※安全でないファイルのダウンロードができないと言われた場合、それを許可するか、
 上記のソースコードをコピーしてテキストファイルにペーストし、
 拡張子をps1に変更しても大丈夫です

更新履歴

  • v1.0.0 (2025-09-14)
    • 初期リリース

ライセンスと免責事項

ライセンス

このスクリプトは、クリエイティブ・コモンズ・ライセンスの下で提供されています。
以下のライセンス条件に同意の上、ご自由にご利用ください。

■適用ライセンス

クリエイティブ・コモンズ 表示 – 非営利 4.0 国際 (CC BY-NC 4.0)

■ライセンスの簡単なまとめ

このライセンスはいくつかのルールを守っていただければ、誰でも無料で自由にこのツールを利用、コピー、改変、再配布できることを定めたものです。

  • 【⭕️ 許されていること】
    • 個人が趣味の範囲で利用すること
    • 非営利団体や教育機関などで利用すること
    • 友人・知人にコピーして渡すこと(再配布)
    • ソースコードが公開されている場合、ご自身で機能を改造(改変)すること
  • 【⚠️ 守っていただきたいルール】
    1. クレジットの表示(表示)
      このツールを紹介、または再配布する際には、作者名「マッシャー」と、この配布ページのURLを記載してください。
    2. 営利目的での利用の禁止(非営利)
      このツール自体や、このツールを組み込んだ作品などを販売したり、仕事上の利益を得る目的で利用したりすることはできません。

免責事項

本ツールは現状有姿(AS-IS)で提供されます。
本ツールの使用によって生じたいかなる損害についても、作者は一切の責任を負いません。
あらかじめご了承ください。

ライセンスの正確な条文については、上記のクリエイティブ・コモンズのリンク先をご確認ください。

コメント

タイトルとURLをコピーしました