wingetコマンドで一括インストールするときに特定のユーザーではなくマシンインストールする

wingetコマンドで一括インストールするときに特定のユーザーではなくマシンインストールする

こんにちは、ひらたつです。

弊社では業務で使用する PC のセットアップ時には、必要なソフトウェアを一括インストールしています。

一括インストールの方法は以下です。

  1. インストールしたいアプリケーションが記載された JSON ファイルを準備する(以下では対象の JSON ファイルを winget.json としています)
  2. コマンドプロンプトを管理者権限で起動し、ダウンロード先のファイルパスに移動して、winget import [JSON ファイル] を実行する
winget.json
{
	"$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
	"CreationDate" : "2022-01-29T15:37:38.042-00:00",
	"Sources" :
	[
		{
			"Packages" :
			[
				{
					"PackageIdentifier" : "Microsoft.VisualStudio.2022.Community"
				},
				{
					"PackageIdentifier" : "7zip.7zip"
				},
				...
				...
			],
			"SourceDetails" :
			{
				"Argument" : "https://winget.azureedge.net/cache",
				"Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
				"Name" : "winget",
				"Type" : "Microsoft.PreIndexed.Package"
			}
		}
	],
	"WinGetVersion" : "1.1.13405"
}

ただ、上記の方法では、サインインしているユーザー以外にはインストールされないソフトウェアがありました。

winget.json の内容を変更することで、サインインしているユーザーに関係なくマシンインストールできると分かりました。

今回はマシンインストールする方法を紹介します。

想定環境

  • Windows 11 Enterprise 22H2

マシンインストールする方法

scope の動作は、パッケージのインストール対象として、現在のユーザーとマシン全体のどちらが選択されるかに影響します。 対応するパラメーターは —scope で、同じ値 (user または machine) が使用されます。 パッケージのインストール スコープに関する既知の問題を参照してください。

"installBehavior": {
   "preferences": {
       "scope": "user"
   }
},

scope - settings コマンド | Microsoft Learn

上記から、Scopemachine を指定すればよいと分かります。

ただ、では実際にどこで Scope を指定すればよいかが分かりませんでしたが、いろいろ試してみて以下の部分に Scope の指定を入れることでマシンインストールできました。

winget.json
{
	"$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
	"CreationDate" : "2022-01-29T15:37:38.042-00:00",
	"Sources" :
	[
		{
			"Packages" :
			[
				{
					"PackageIdentifier" : "Microsoft.VisualStudio.2022.Community",
					"Scope": "machine"				},
				{
					"PackageIdentifier" : "7zip.7zip",
					"Scope": "machine"				},
				...
				...
			],
			"SourceDetails" :
			{
				"Argument" : "https://winget.azureedge.net/cache",
				"Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
				"Name" : "winget",
				"Type" : "Microsoft.PreIndexed.Package"
			}
		}
	],
	"WinGetVersion" : "1.1.13405"
}

上記の例ではソフトウェアを 2 つしか指定していませんが、必要に応じてインストールしたいソフトウェアを増やしてください。

最後に

対象 PC にソフトウェアを一括でマシンインストールする方法を紹介しました。

PC のセットアップは手間がかかる作業ですので、少しでも効率化いただけると幸いです。

では、次の記事でお会いしましょう。

参考

hiratatsu04