Intuneを使って大量のデバイスに一括でショートカットを作成する方法

この記事の内容

  • PowerShellスクリプトでデスクトップにショートカットを作成する方法を解説します
  • MSペイントでアイコンファイル(.ico)を作成し、ショートカットに適用する手順を説明します
  • OneDriveを活用してアイコンファイルを配布用に公開する方法を紹介します
  • PowerShellスクリプトからWebでアイコンをダウンロードしてショートカットに設定する実装例を示します
  • Intuneを使って複数デバイスにスクリプトを一括配布・実行させる手順をまとめます

Step 1: PowerShellでショートカットを作成する

まず、PowerShellスクリプトを使ってデスクトップにショートカットを作成する基本的な方法を確認します。

ここでは例として C:\Windows\notepad.exe へのショートカットをデスクトップに作成します。

$shell = New-Object -ComObject WScript.Shell
$desktopPath = [System.Environment]::GetFolderPath("Desktop")

$shortcut = $shell.CreateShortcut("$desktopPath\notepad.lnk")
$shortcut.TargetPath = "C:\Windows\notepad.exe"
$shortcut.Save()

このスクリプトを実行すると、デスクトップに notepad.lnk というショートカットが作成されます。ダブルクリックするとメモ帳が起動することを確認できます。


Step 2: アイコンファイルを作成する

次に、ショートカットに設定するアイコンファイル(.ico)を用意します。無料で作成するにはMSペイントを使うのが手軽です。

  1. MSペイントを開きます
  2. 「サイズ変更」から ピクセル指定で 48×48 に設定します
  3. 任意のデザインを描画します
  4. 「名前を付けて保存」で BMP形式 で保存します(例:icon.bmp
  5. 保存したファイルの拡張子を .ico に変更します

これで簡易的なアイコンファイルが利用できる状態になります。


Step 3: スクリプトでアイコンを変更する

手動での操作を確認したあと、同じ処理をPowerShellスクリプトで実装します。

手動での確認手順は以下のとおりです。

  1. ショートカットを右クリックして「プロパティ」を開きます
  2. 「アイコンの変更」をクリックします
  3. 「参照」で用意したアイコンファイル(.ico)を選択します
  4. 「OK」で適用します

この操作をスクリプトで実装すると以下のようになります。

$shell = New-Object -ComObject WScript.Shell
$desktopPath = [System.Environment]::GetFolderPath("Desktop")

$shortcut = $shell.CreateShortcut("$desktopPath\notepad.lnk")
$shortcut.TargetPath = "C:\Windows\notepad.exe"
$shortcut.IconLocation = "$desktopPath\icon.ico, 0"
$shortcut.Save()

IconLocation にアイコンファイルのパスとインデックス番号(0)を指定することで、アイコンを設定できます。


Step 4: アイコンファイルをOneDriveで配布する

Intuneでスクリプトを配布する場合、アイコンファイルもデバイスに届ける必要があります。ローカルパスを直接指定することはできないため、インターネット上からダウンロードする仕組みを組み込みます。

OneDriveへのアップロードと共有リンクの取得

  1. アイコンファイルをOneDriveに保存して同期します
  2. OneDrive上でファイルを右クリックし、「共有」から「リンクのコピー」を取得します
  3. 通常の共有リンクはブラウザでの表示用のため、直接ダウンロードできるリンクに変換する必要があります

直接ダウンロードリンクを取得できない場合は、社内Webサーバーなどにアイコンファイルを配置することも有効な代替手段です。

スクリプトにダウンロード処理を追加する

$iconUrl = "https://example.com/path/to/icon.ico"  # 直接ダウンロードできるURL
$desktopPath = [System.Environment]::GetFolderPath("Desktop")
$iconPath = "$desktopPath\icon.ico"

# アイコンをダウンロード
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($iconUrl, $iconPath)

# ショートカットを作成
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut("$desktopPath\notepad.lnk")
$shortcut.TargetPath = "C:\Windows\notepad.exe"
$shortcut.IconLocation = "$iconPath, 0"
$shortcut.Save()

これにより、スクリプト実行時にアイコンをダウンロードしてからショートカットを作成する一連の処理が完成します。


文字化け問題への対処

PowerShellスクリプト内に日本語を含める場合、文字コードに注意が必要です。

スクリプトをUTF-8で保存するとIntuneからの配布時に文字化けが発生することがあります。Shift-JIS(SJIS)でも同様の問題が発生するケースがあります。

最も確実な対処法は、スクリプト内に日本語を使わないことです。 ファイル名・変数名・コメントなどをすべて英数字に統一することで文字化けの問題を根本的に回避できます。


Step 5: Intuneからスクリプトを配布する

完成したスクリプトをIntuneで配布する手順は以下のとおりです。

  1. Microsoft 365管理センターを開きます
  2. エンドポイントマネージャー(Microsoft Intune管理センター) に移動します
  3. 「デバイス」→「スクリプト」→「追加」→「Windows 10以降」を選択します
  4. 名前を入力します(例:Desktop Shortcut Creation
  5. 「スクリプトの設定」でスクリプトファイルをアップロードします
  6. 以下の設定を行います:
    • ログオンした資格情報を使用してスクリプトを実行する:「はい」(デスクトップパスをユーザー環境から取得するため)
    • スクリプト署名の確認を強制する:「いいえ」
    • 64ビットのPowerShellでスクリプトを実行する:任意
  7. 「割り当て」でスクリプトを適用するグループ(例:すべてのユーザー)を追加します
  8. 「確認及び追加」で保存します

同期を早める方法

Intuneのスクリプト確認はデフォルトでは約1時間ごとです。すぐに反映させたい場合は、対象デバイスで以下の操作を行います。

  1. services.msc を開きます
  2. Microsoft Intune Management Extension サービスを再起動します

これにより、スクリプトやポリシーの確認が早期に実行されます。


まとめ

IntuneとPowerShellを組み合わせることで、大量のデバイスに対してデスクトップショートカットを一括作成することができます。処理の流れは以下のとおりです。

  1. WScript.Shell COMオブジェクトでショートカットを作成する
  2. MSペイント等でアイコンファイル(.ico)を用意する
  3. System.Net.WebClient でアイコンをWebからダウンロードする
  4. ショートカットに IconLocation でアイコンを設定する
  5. IntuneのPowerShellスクリプト機能で全デバイスに配布する

なお、スクリプト内に日本語を含めると文字化けが発生しやすいため、ファイル名・コメント・変数名はすべて英数字で統一することを強く推奨します。