Microsoft Endpoint Configuration Manager を使用して SEMM によりデバイスを管理する

Surface UEFI デバイスの Microsoft Surface Enterprise Management Mode (SEMM) 機能を使用すると、管理者は Surface UEFI 設定の構成を管理し、セキュリティで保護できます。 ほとんどの組織では、このプロセスは、Microsoft Surface UEFI Configurator ツールを使用して Windows インストーラー (.msi) パッケージを作成することで実現されます。 これらのパッケージは、SEMM にデバイスを登録し、Surface UEFI 設定の構成を更新するために、クライアント Surface デバイスに実行または展開されます。

Microsoft Endpoint Configuration Manager を使用している組織の場合は、Microsoft Surface UEFI Configurator .msi プロセスを使用して SEMM を展開および管理する方法があります。 Microsoft Surface UEFI Manager は、SEMM 管理に必要なアセンブリをデバイスで使用できるようにする軽量インストーラーです。 マネージド クライアントに Microsoft Surface UEFI Manager を使用してこれらのアセンブリをインストールすることで、SEMM を PowerShell スクリプトを使用して Configuration Manager で管理し、アプリケーションとして展開できます。 このプロセスでは、外部の Microsoft Surface UEFI Configurator ツールが不要な Configuration Manager 内で SEMM 管理が実行されます。

注意

この記事で説明するプロセスは、以前のバージョンの Endpoint Configuration Manager または他のサードパーティの管理ソリューションで動作する場合がありますが、Microsoft Surface UEFI Manager と PowerShell を使用した SEMM の管理は、エンドポイント構成マネージャーの現在のブランチでのみサポートされます。

前提条件

この記事で説明するプロセスを開始する前に、次のテクノロジとツールについて理解しておいてください。

注意

また、SEMM のセキュリティ保護に使用する証明書にもアクセスする必要があります。 この証明書の要件の詳細については、「 Surface Enterprise Management Mode 証明書の要件」を参照してください。

この証明書を安全な場所に保持し、適切にバックアップすることが非常に重要です。 この証明書が失われたり使用できなくなったりした場合、Surface UEFI をリセットしたり、管理された Surface UEFI 設定を変更したり、登録されている Surface デバイスから SEMM を削除したりすることはできません。

Microsoft Surface UEFI Manager をダウンロードする

Configuration Manager を使用した SEMM の管理では、各クライアント Surface デバイスに Microsoft Surface UEFI Manager をインストールする必要があります。 Microsoft Surface UEFI Manager (SurfaceUEFIManager.msi) は、Microsoft ダウンロード センターの Surface Tools for IT ページからダウンロードできます。

Configuration Manager 用の SEMM スクリプトをダウンロードする

Microsoft Surface UEFI Manager をクライアント Surface デバイスにインストールした後は、POWERShell スクリプトを使用して SEMM を展開および管理できます。 SURFACE Tools for IT からSEMM_PowerShell.zipをダウンロードして 、SEMM 管理スクリプト のサンプルを取得します。

Microsoft Surface UEFI Manager を展開する

Microsoft Surface UEFI Manager の展開は、一般的なアプリケーション展開です。 Microsoft Surface UEFI Manager インストーラー ファイルは、標準の サイレント オプションを使用してインストールできる標準の Windows インストーラー ファイルです。

Microsoft Surface UEFI Manager をインストールするコマンドは次のとおりです。

msiexec /i "SurfaceUEFIManagerSetup.msi" /q

Microsoft Surface UEFI Manager をアンインストールするコマンドは次のとおりです。

msiexec /x {541DA890-1AEB-446D-B3FD-D5B3BB18F9AF} /q

新しいアプリケーションを作成し、Surface デバイスを含むコレクションにデプロイするには、次の手順に従います。

  1. スタート画面または [スタート] メニューから Configuration Manager コンソールを開きます。

  2. ウィンドウの左下隅にある [ソフトウェア ライブラリ ] を選択します。

  3. ソフトウェア ライブラリの [アプリケーション管理 ] ノードを展開し、[ アプリケーション] を選択します。

  4. ウィンドウの上部にある [ホーム] タブの下にある [アプリケーションの作成] ボタンを選択します。 これにより、アプリケーションの作成ウィザードが開始されます。

  5. アプリケーションの作成ウィザードには、次の一連の手順が表示されます。

    • [全般] – [ インストール ファイルからこのアプリケーションに関する情報を自動的に検出 する] オプションが既定で選択されています。 [ 種類 ] フィールドでは、 Windows インストーラー (.msi ファイル) も既定で選択されています。 [参照] を選択して移動し 、SurfaceUEFIManagerSetup.msiを選択し、[次へ] を選択します。

      注意

      SurfaceUEFIManagerSetup.msiの場所は、ネットワーク共有上にあり、他のファイルが含まれていないフォルダーに配置されている必要があります。 ローカル ファイルの場所は使用できません。

    • インポート情報 – アプリケーションの作成ウィザードは、.msi ファイルを解析し、 アプリケーション名製品コードを読み取ります。 SurfaceUEFIManagerSetup.msiは、図 1 に示すように、行 の [コンテンツ ファイル] の下に唯一のファイルとして一覧表示する必要があります。 [次へ] を選択して続行します。

      Surface UEFI Manager のセットアップからの情報は自動的に解析されます。

      図 1。 Microsoft Surface UEFI Manager のセットアップからの情報は自動的に解析されます

    • 全般情報 – アプリケーションの名前と発行元とバージョンに関する情報を変更したり、このページにコメントを追加したりできます。 Microsoft Surface UEFI Manager のインストール コマンドは、[インストール プログラム] フィールドに表示されます。 システム用インストールの既定のインストール動作により、ユーザーが Surface デバイスにログオンしていない場合でも、Microsoft Surface UEFI Manager は SEMM に必要なアセンブリをインストールできます。 [次へ] を選択して続行します。

    • 概要 – [ 情報のインポート] ステップで解析された情報と、[ 全般情報 ] ステップの選択内容がこのページに表示されます。 [次へ] を選択して選択内容を確認し、アプリケーションを作成します。

    • 進行状況 – アプリケーションがインポートされ、ソフトウェア ライブラリに追加されると、進行状況バーと状態が表示されます。

    • 完了 – アプリケーション作成プロセスが完了すると、アプリケーションの作成が正常に完了したことを確認するメッセージが表示されます。 [ 閉じる ] を選択して、アプリケーションの作成ウィザードを完了します。

Configuration Manager でアプリケーションを作成したら、それを配布ポイントに配布し、Surface デバイスを含むコレクションに展開できます。 このアプリケーションは、Surface デバイスに SEMM をインストールまたは有効にしません。 POWERShell スクリプトを使用して SEMM を有効にするために必要なアセンブリのみが提供されます。

SEMM で管理されないデバイスに Microsoft Surface UEFI Manager アセンブリをインストールしない場合は、SEMM Configuration Manager スクリプトの依存関係として Microsoft Surface UEFI Manager を構成できます。 このシナリオについては、この記事の後半の 「SEMM Configuration Manager スクリプトの展開 」セクションで説明します。

SEMM Configuration Manager スクリプトを作成または変更する

必要なアセンブリをデバイスにインストールした後、SEMM にデバイスを登録し、Surface UEFI を構成するプロセスは PowerShell スクリプトで行われ、Configuration Manager を使用してスクリプト アプリケーションとして展開されます。 これらのスクリプトは、組織と環境のニーズに合わせて変更できます。 たとえば、さまざまな部門またはロールのマネージド Surface デバイスに対して複数の構成を作成できます。 SEMM と Configuration Manager 用のスクリプトのサンプルは、この記事の冒頭の 「前提条件」 セクションのリンクからダウンロードできます。

Configuration Manager を使用して SEMM 展開を実行するには、次の 2 つのプライマリ スクリプトが必要です。

  • ConfigureSEMM.ps1 – このスクリプトを使用して、Surface デバイスの構成パッケージを作成し、Surface デバイスに指定した設定を適用し、SEMM にデバイスを登録し、SEMM でのデバイスの登録を識別するために使用するレジストリ キーを設定します。
  • ResetSEMM.ps1 – このスクリプトを使用して Surface デバイスの SEMM をリセットします。これにより、SEMM から登録が解除され、Surface UEFI 設定に対するコントロールが削除されます。

サンプル スクリプトには、Surface UEFI 設定を設定する方法と、それらの設定に対するアクセス許可を制御する方法の例が含まれています。 これらの設定は、Surface UEFI をセキュリティで保護し、環境のニーズに応じて Surface UEFI 設定を設定するように変更できます。 この記事の以降のセクションでは、ConfigureSEMM.ps1 スクリプトについて説明し、要件に合わせてスクリプトに加える必要がある変更について説明します。

注意

SEMM Configuration Manager スクリプトとエクスポートされた SEMM 証明書ファイル (.pfx) は、Configuration Manager に追加する前に、他のファイルを含まない同じフォルダーに配置する必要があります。

サポートされているデバイスで USB ポートを管理する

Surface デバイスで既定で USB ポート機能が有効になっていると、Surface UEFI を使用する多くのデバイスでは、管理者は USB ポートへの接続を無効にすることができます。 たとえば、ユーザーが USB サム ドライブや外付けハード ディスクからデータをコピーできないようにしたい場合があります。

USB ポート機能を管理する方法は、Surface デバイスによって異なります。 最近リリースされたデバイス (Surface Pro 8、Surface Go 3、Surface Laptop Studio) を使用すると、Powershell を使用して USB-C ポートの機能をきめ細かく管理し、USB-A を無効にすることができます。 Surface デバイス間で使用可能な設定については、以下の 表 1 を参照してください。

USB2 と USB3 をサポートする USB-A ポートの場合は、USB コントローラーから USB データ プロトコルを無効にして、すべての機能を防止できます。

DisplayPort と USB Power Delivery のサポートを使用して USB-C ポートを管理すると、すべての機能を無効にする以外の追加オプションが提供されます。 たとえば、データ接続を防止して、ユーザーが USB ストレージからデータをコピーできないようにすることができますが、ディスプレイを拡張し、USB-C ドックを介してデバイスを充電する機能を保持できます。

Surface Pro 8、Surface Laptop Studio、Surface Go 3 以降、これらの両方のオプションは SEMM PowerShell スクリプトを使用して使用できるようになりました。

USB ポートを管理するには:

  1. Surface Tools for IT に移動し、SEMM_PowerShell.zipをダウンロードします。
  2. ConfigureSEMM.ps1を開き、必要に応じて変更します。
  3. USB-A ポートと USB-C ポートの両方を無効にするには、UsbPortHwDisabled の設定を有効にします。

USB-C ポートのその他のオプション:

  1. ConfigureSEMM.ps1を実行し、必要に応じて変更します。
  2. データのみを無効にし、電源と表示の機能に USB-C ポートを引き続き使用するには、 モード 1 – データが無効になっているモードを有効にします。
  3. データ、電源、および表示機能をオフにするには、 モード 2 – 完全に無効にするモードを有効にします。

表 1. Surface デバイスの USB ポート管理オプション

デバイス USB-A オプション USB-C オプション 設定 SEMM ID
Surface Laptop 2
Surface Pro 6
Surface Laptop
Surface Pro 4
Surface Pro
Surface Studio 2
Surface Studio
****
データを有効または無効にする N/A: デバイスに USB-C ポートがない - USBPortEnabled (既定)
- USBPortHWDisabled
370-379
Surface Laptop SE
Surface Pro 7+
Surface Pro 7
Surface Go 2
Surface Go
Surface Laptop Go
Surface Laptop Go 2
Surface Laptop 3 (Intel CPU のみ)
データを有効または無効にする - データを有効または無効にする

電源配信とディスプレイアウト機能は常に使用できます
- USBPortEnabled (既定)
- USBPortHWDisabled
370-379
Surface Pro 8
Surface Laptop Studio
Surface Go、 Surface Laptop Go 2
3
N/A: デバイスに USB-A ポートがありません - データ、ディスプレイアウト、および電源配信を有効にする
- データを無効にするが、ディスプレイアウトと電源配信を有効にする
- データ、ディスプレイアウト、および電源配信を無効にする
- UsbPortEnabled (既定)
- UsbPortDataDisabled
- UsbPortHwDisabled
380-389
Surface Book 3
Surface Book 2
基本 USB ポートが常に有効になっている 基本 USB ポートが常に有効になっている 該当なし
Surface Book (パフォーマンス ベース搭載モデル)
Surface Book
基本 USB ポートが常に有効になっている N/A: デバイスに USB-C ポートがない 該当なし

この記事の以降のセクションでは、ConfigureSEMM.ps1 スクリプトについて説明し、要件に合わせてスクリプトに加える必要がある変更について説明します。

証明書とパッケージ名を指定する

変更する必要があるスクリプトの最初の領域は、SEMM 証明書を指定して読み込む部分であり、SurfaceUEFIManager のバージョンと、SEMM 構成パッケージと SEMM リセット パッケージの名前も示します。 証明書名と SurfaceUEFIManager バージョンは、ConfigureSEMM.ps1 スクリプトの 56 行目から 73 行目に指定されます。

56    $WorkingDirPath = split-path -parent $MyInvocation.MyCommand.Definition
57    $packageRoot = "$WorkingDirPath\Config"
58    $certName = "FabrikamSEMMSample.pfx"
59  $DllVersion = "2.26.136.0"
60
61  $certNameOnly = [System.IO.Path]::GetFileNameWithoutExtension($certName)
62  $ProvisioningPackage = $certNameOnly + "ProvisioningPackage.pkg"
63  $ResetPackage = $certNameOnly + "ResetPackage.pkg"
64
65    if (-not (Test-Path $packageRoot))  { New-Item -ItemType Directory -Force -Path $packageRoot }
66    Copy-Item "$WorkingDirPath\$certName" $packageRoot
67    
68    $privateOwnerKey = Join-Path -Path $packageRoot -ChildPath $certName
69    $ownerPackageName = Join-Path -Path $packageRoot -ChildPath $ProvisioningPackage
70    $resetPackageName = Join-Path -Path $packageRoot -ChildPath $ResetPackage
71    
72    # If your PFX file requires a password then it can be set here, otherwise use a blank string.
73    $password = "1234" 

$certName変数の FabrikamSEMMSample.pfx 値を、58 行目の SEMM 証明書ファイルの名前に置き換えます。 スクリプトは、スクリプトが配置されているフォルダーに作業ディレクトリ (名前付き Config) を作成し、証明書ファイルをこの作業ディレクトリにコピーします。

所有者パッケージとリセット パッケージも Config ディレクトリに作成され、スクリプトによって生成された Surface UEFI の設定とアクセス許可の構成が保持されます。

73 行目で、 $password 変数の値を 1234 から証明書ファイルのパスワードに置き換えます。 パスワードが必要ない場合は、 1234 テキストを削除します。

注意

SEMM にデバイスを登録するには、証明書拇印の最後の 2 文字が必要です。 このスクリプトは、ユーザーにこれらの数字を表示します。これにより、ユーザーまたは技術者は、システムを再起動してデバイスを SEMM に登録する前に、これらの数字を記録できます。 このスクリプトでは、150 から 155 行目にある次のコードを使用してこれを実現します。

150 # Device owners will need the last two characters of the thumbprint to accept SEMM ownership.
151 # For convenience we get the thumbprint here and present to the user.
152 $pw = ConvertTo-SecureString $password -AsPlainText -Force
153 $certPrint = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
154 $certPrint.Import($privateOwnerKey, $pw, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
155 Write-Host "Thumbprint =" $certPrint.Thumbprint

証明書ファイル (.pfx) にアクセスできる管理者は、CertMgr で .pfx ファイルを開くことで、いつでも拇印を読み取ることができます。 CertMgr で拇印を表示するには、次の手順に従います。

  1. .pfx ファイルを右クリックし、[ 開く] を選択します。
  2. ナビゲーション ウィンドウでフォルダーを展開します。
  3. [ 証明書] を選択します
  4. メイン ウィンドウで証明書を右クリックし、[ 開く] を選択します。
  5. [ 詳細 ] タブを選択します。
  6. **[**表示] ドロップダウン メニューで [すべて] または [プロパティのみ] を選択する必要があります。
  7. [ 拇印] フィールドを選択します。

注意

また、ResetSEMM.ps1 スクリプトのこのセクションに SEMM 証明書の名前とパスワードを入力して、Configuration Manager がアンインストール アクションでデバイスから SEMM を削除できるようにする必要があります。

アクセス許可を構成する

Surface UEFI の構成を指定するスクリプトの最初のリージョンは、 アクセス許可の構成 リージョンです。 このリージョンは、サンプル スクリプトの 210 行目から始まり、コメント # [アクセス許可の構成] で始まり、247 行目に進みます。 次のコード フラグメントでは、最初にすべての Surface UEFI 設定にアクセス許可を設定し、SEMM のみで変更できるようにし、ローカル ユーザーが Surface UEFI パスワード、TPM、およびフロント カメラと背面カメラを変更できるように明示的なアクセス許可を追加します。

210 # Configure Permissions
211 foreach ($uefiV2 IN $surfaceDevices.Values) {
212 if ($uefiV2.SurfaceUefiFamily -eq $Device.Model) {
213 Write-Host "Configuring permissions"
214 Write-Host $Device.Model
215 Write-Host "======================="
216
217 # Here we define which "identities" will be allowed to modify which settings
218 #   PermissionSignerOwner = The primary SEMM enterprise owner identity
219 #   PermissionLocal = The user when booting to the UEFI pre-boot GUI
220 #   PermissionSignerUser, PermissionSignerUser1, PermissionSignerUser2 =
221 #     Additional user identities created so that the signer owner
222 #     can delegate permission control for some settings.
223 $ownerOnly = [Microsoft.Surface.IUefiSetting]::PermissionSignerOwner
224 $ownerAndLocalUser = ([Microsoft.Surface.IUefiSetting]::PermissionSignerOwner -bor [Microsoft.Surface.IUefiSetting]::PermissionLocal)
225 
226 # Make all permissions owner only by default
227 foreach ($setting IN $uefiV2.Settings.Values) {
228 $setting.ConfiguredPermissionFlags = $ownerOnly
229 }
230 
231 # Allow the local user to change their own password
232 $uefiV2.SettingsById[501].ConfiguredPermissionFlags = $ownerAndLocalUser
233
234 Write-Host ""
235  
236 # Create a unique package name based on family and LSV.
237 # We will choose a name that can be parsed by later scripts.
238 $packageName = $uefiV2.SurfaceUefiFamily + "^Permissions^" + $lsv + ".pkg"
239 $fullPackageName = Join-Path -Path $packageRoot -ChildPath $packageName
240 
241 # Build and sign the Permission package then save it to a file.
242 $permissionPackageStream =  $uefiV2.BuildAndSignPermissionPackage($privateOwnerKey, $password, "", $null, $lsv)
243 $permissionPackage = New-Object System.IO.Filestream($fullPackageName, [System.IO.FileMode]::CreateNew, [System.IO.FileAccess]::Write)
244 $permissionPackageStream.CopyTo($permissionPackage)
245 $permissionPackage.Close()
246 }
247 }

$uefiV 2 変数は、名前または ID を設定して Surface UEFI 設定を識別し、次のいずれかの値にアクセス許可を構成します。

  • $ownerOnly – この設定を変更する権限は、SEMM にのみ付与されます。
  • $ownerAndLocalUser – この設定を変更するアクセス許可は、Surface UEFI と SEMM を起動するローカル ユーザーに付与されます。

Surface UEFI で使用できる設定名と ID に関する情報については、この記事の 「設定名と ID」 セクションを参照してください。

設定の構成

Surface UEFI の構成を指定するスクリプトの 2 番目のリージョンは、ConfigureSEMM.ps1 スクリプトの [設定 の構成] 領域で、各設定を有効または無効にするかどうかを構成します。 サンプル スクリプトには、すべての設定を既定値に設定する手順が含まれています。 次に、このスクリプトでは、PXE ブート用の IPv6 を無効にし、Surface UEFI 管理者パスワードを変更しないという明示的な手順が提供されます。 このリージョンは、サンプル スクリプトの 291 行目から 335 行目までの #[設定の構成] コメントで始まります。 リージョンは次のように表示されます。

291 # Configure Settings
292 foreach ($uefiV2 IN $surfaceDevices.Values) {
293 if ($uefiV2.SurfaceUefiFamily -eq $Device.Model) {
294 Write-Host "Configuring settings"
295 Write-Host $Device.Model
296 Write-Host "===================="
297
298 # In this demo, we will start by setting every setting to the default factory setting.
299 # You may want to start by doing this in your scripts
300 # so that every setting gets set to a known state.
301 foreach ($setting IN $uefiV2.Settings.Values) {
302 $setting.ConfiguredValue = $setting.DefaultValue
303 }
304 
305 $EnabledValue = "Enabled"
306 $DisabledValue = "Disabled"
307
308 # If you want to set something to a different value from the default,
309 # here are examples of how to accomplish this.
310 # This disables IPv6 PXE boot by name:
311 $uefiV2.Settings["IPv6 for PXE Boot"].ConfiguredValue = $DisabledValue
312
313 # This disables IPv6 PXE Boot by ID:
314 $uefiV2.SettingsById[400].ConfiguredValue = $DisabledValue
315
316 Write-Host ""
317
318 # If you want to leave the setting unmodified, set it to $null
319 # PowerShell has issues setting things to $null so ClearConfiguredValue()
320 # is supplied to do this explicitly.
321 # Here is an example of leaving the UEFI administrator password as-is,
322 # even after we initially set it to factory default above.
323 $uefiV2.SettingsById[501].ClearConfiguredValue()
324 
325 # Create a unique package name based on family and LSV.
326 # We will choose a name that can be parsed by later scripts.
327 $packageName = $uefiV2.SurfaceUefiFamily + "^Settings^" + $lsv + ".pkg"
328 $fullPackageName = Join-Path -Path $packageRoot -ChildPath $packageName
329 
330 # Build and sign the Settings package then save it to a file.
331 $settingsPackageStream =  $uefiV2.BuildAndSignSecuredSettingsPackage($privateOwnerKey, $password, "", $null, $lsv)
332 $settingsPackage = New-Object System.IO.Filestream($fullPackageName, [System.IO.FileMode]::CreateNew, [System.IO.FileAccess]::Write)
333 $settingsPackageStream.CopyTo($settingsPackage)
334 $settingsPackage.Close()
335 }

スクリプトの [アクセス許可の構成] セクションのアクセス許可 と同様に、各 Surface UEFI 設定の構成は 、$uefiV 2 変数を定義することによって実行されます。 $uefiV 2 変数を定義する行ごとに、Surface UEFI 設定は名前または ID の設定によって識別され、構成された値は [有効] または [無効] に設定されます。

Surface UEFI 設定の構成を変更しない場合 (たとえば、すべての Surface UEFI 設定を既定値にリセットする操作によって Surface UEFI 管理者パスワードがクリアされないようにするには、 ClearConfiguredValue() を使用して、この設定を変更しないことを強制できます。 サンプル スクリプトでは、これは、設定 ID 501 によってサンプル スクリプトで識別される Surface UEFI 管理者パスワードのクリアを防ぐために、323 行目で使用されます。

Surface UEFI の使用可能な設定名と ID に関する情報については、この記事の後半の 「設定名と ID」 セクションを参照してください。

設定レジストリ キー

Configuration Manager の登録済みシステムを識別するために、ConfigureSEMM.ps1 スクリプトは、登録されたシステムを SEMM 構成スクリプトと共にインストールされたものとして識別するために使用できるレジストリ キーを書き込みます。 これらのキーは、次の場所にあります。

HKLM\SOFTWARE\Microsoft\Surface\SEMM

380 から 477 行目にある次のコード フラグメントは、これらのレジストリ キーの書き込みに使用されます。

380 # For Endpoint Configuration Manager or other management solutions that wish to know what version is applied, tattoo the LSV and current DateTime (in UTC) to the registry:
381 $UTCDate = (Get-Date).ToUniversalTime().ToString()
382 $certIssuer = $certPrint.Issuer
383 $certSubject = $certPrint.Subject
384 
385 $SurfaceRegKey = "HKLM:\SOFTWARE\Microsoft\Surface\SEMM"
386 New-RegKey $SurfaceRegKey
387 $LSVRegValue = Get-ItemProperty $SurfaceRegKey LSV -ErrorAction SilentlyContinue
388 $DateTimeRegValue = Get-ItemProperty $SurfaceRegKey LastConfiguredUTC -ErrorAction SilentlyContinue
389 $OwnershipSessionIdRegValue = Get-ItemProperty $SurfaceRegKey OwnershipSessionId -ErrorAction SilentlyContinue
390 $PermissionSessionIdRegValue = Get-ItemProperty $SurfaceRegKey PermissionSessionId -ErrorAction SilentlyContinue
391 $SettingsSessionIdRegValue = Get-ItemProperty $SurfaceRegKey SettingsSessionId -ErrorAction SilentlyContinue
392 $IsResetRegValue = Get-ItemProperty $SurfaceRegKey IsReset -ErrorAction SilentlyContinue
393 $certUsedRegValue = Get-ItemProperty $SurfaceRegKey CertName -ErrorAction SilentlyContinue
394 $certIssuerRegValue = Get-ItemProperty $SurfaceRegKey CertIssuer -ErrorAction SilentlyContinue
395 $certSubjectRegValue = Get-ItemProperty $SurfaceRegKey CertSubject -ErrorAction SilentlyContinue
396 
397 
398 If ($LSVRegValue -eq $null)
399 {
400     New-ItemProperty -Path $SurfaceRegKey -Name LSV -PropertyType DWORD -Value $lsv | Out-Null
401 }
402 Else
403 {
404     Set-ItemProperty -Path $SurfaceRegKey -Name LSV -Value $lsv
405 }
406 
407 If ($DateTimeRegValue -eq $null)
408 {
409     New-ItemProperty -Path $SurfaceRegKey -Name LastConfiguredUTC -PropertyType String -Value $UTCDate | Out-Null
410 }
411 Else
412 {
413     Set-ItemProperty -Path $SurfaceRegKey -Name LastConfiguredUTC -Value $UTCDate
414 }
415 
416 If ($OwnershipSessionIdRegValue -eq $null)
417 {
418     New-ItemProperty -Path $SurfaceRegKey -Name OwnershipSessionId -PropertyType String -Value $ownerSessionIdValue | Out-Null
419 }
420 Else
421 {
422     Set-ItemProperty -Path $SurfaceRegKey -Name OwnershipSessionId -Value $ownerSessionIdValue
423 }
424 
425 If ($PermissionSessionIdRegValue -eq $null)
426 {
427     New-ItemProperty -Path $SurfaceRegKey -Name PermissionSessionId -PropertyType String -Value $permissionSessionIdValue | Out-Null
428 }
429 Else
430 {
431     Set-ItemProperty -Path $SurfaceRegKey -Name PermissionSessionId -Value $permissionSessionIdValue
432 }
433 
434 If ($SettingsSessionIdRegValue -eq $null)
435 {
436     New-ItemProperty -Path $SurfaceRegKey -Name SettingsSessionId -PropertyType String -Value $settingsSessionIdValue | Out-Null
437 }
438 Else
439 {
440     Set-ItemProperty -Path $SurfaceRegKey -Name SettingsSessionId -Value $settingsSessionIdValue
441 }
442 
443 If ($IsResetRegValue -eq $null)
444 {
445     New-ItemProperty -Path $SurfaceRegKey -Name IsReset -PropertyType DWORD -Value 0 | Out-Null
446 }
447 Else
448 {
449     Set-ItemProperty -Path $SurfaceRegKey -Name IsReset -Value 0
450 }
451 
452 If ($certUsedRegValue -eq $null)
453 {
454     New-ItemProperty -Path $SurfaceRegKey -Name CertName -PropertyType String -Value $certName | Out-Null
455 }
456 Else
457 {
458     Set-ItemProperty -Path $SurfaceRegKey -Name CertName -Value $certName
459 }
460 
461 If ($certIssuerRegValue -eq $null)
462 {
463     New-ItemProperty -Path $SurfaceRegKey -Name CertIssuer -PropertyType String -Value $certIssuer | Out-Null
464 }
465 Else
466 {
467     Set-ItemProperty -Path $SurfaceRegKey -Name CertIssuer -Value $certIssuer
468 }
469 
470 If ($certSubjectRegValue -eq $null)
471 {
472     New-ItemProperty -Path $SurfaceRegKey -Name CertSubject -PropertyType String -Value $certSubject | Out-Null
473 }
474 Else
475 {
476     Set-ItemProperty -Path $SurfaceRegKey -Name CertSubject -Value $certSubject
477 }

設定名と ID

Surface UEFI 設定または Surface UEFI 設定のアクセス許可を構成するには、各設定を設定名または設定 ID で参照する必要があります。 Surface UEFI の新しい更新プログラムごとに、新しい設定が追加される場合があります。 ( Surface Tools for IT のSEMM_Powershell.zipから) ShowSettingsOptions.ps1 スクリプトを実行すると、使用可能な設定の詳細が提供されます。 ShowSettingsOptions.ps1を実行するコンピューターには Microsoft Surface UEFI Manager がインストールされている必要がありますが、スクリプトには Surface デバイスは必要ありません。

SEMM Configuration Manager スクリプトを展開する

クライアント デバイスで SEMM を構成して有効にするスクリプトを準備したら、次の手順では、これらのスクリプトを Configuration Manager のアプリケーションとして追加します。 Configuration Manager を開く前に、次のファイルが他のファイルを含まない共有フォルダーにあることを確認します。

  • ConfigureSEMM.ps1
  • ResetSEMM.ps1
  • SEMM 証明書 (SEMMCertificate.pfx など)

SEMM Configuration Manager スクリプトは、スクリプト アプリケーションとして Configuration Manager に追加されます。 ConfigureSEMM.ps1を使用して SEMM をインストールするコマンドは次のとおりです。

Powershell.exe -file ".\ConfigureSEMM.ps1"

ResetSEMM.ps1を使用して SEMM をアンインストールするコマンドは次のとおりです。

Powershell.exe -file ".\ResetSEMM.ps1"

アプリケーションとして SEMM Configuration Manager スクリプトを Configuration Manager に追加するには、次のプロセスを使用します。

  1. この記事の前半の 「Microsoft Surface UEFI Manager の展開 」セクションの手順 1 ~ 手順 5 を使用して、アプリケーションの作成ウィザードを開始します。

  2. 次のように、アプリケーションの作成ウィザードを実行します。

    • [全般 ] – [ 手動でアプリケーション情報を指定する] を選択し、[ 次へ] を選択します。

    • [全般情報] – アプリケーションの名前 (SEMM など) と、このページで必要なその他の情報 (発行元、バージョン、コメントなど) を入力します。 [次へ] を選択して続行します。

    • アプリケーション カタログ – このページのフィールドには既定値を残すことができます。 [次へ] を選択します。

    • 展開の種類 – [ 追加] を選択して、展開の種類の作成ウィザードを開始します。

    • 次のように、展開の種類の作成ウィザードの手順に進みます。

      • [全般][種類] ドロップダウン メニューから [スクリプト インストーラー] を選択します。 [手動で展開の種類情報を指定する] オプションが自動的に選択されます。 [次へ] を選択して続行します。
      • [全般情報] – 展開の種類の名前 (SEMM 構成スクリプトなど) を入力し、[ 次へ ] を選択して続行します。
      • [コンテンツ] – [コンテンツの場所] フィールドの横にある [参照] を選択し、SEMM Configuration Manager スクリプトが配置されているフォルダーを選択します。 [ インストール プログラム ] フィールドに、この記事で前述した インストール コマンド を入力します。 [ プログラムのアンインストール] フィールドに、この記事の前半にある アンインストール コマンド を入力します (図 2 を参照)。 [次へ] を選択して、次のページに移動します。

      インストール コマンドとアンインストール コマンドとして SEMM Configuration Manager スクリプトを設定します。

      図 2。 インストール コマンドとアンインストール コマンドとして SEMM Configuration Manager スクリプトを設定する

      • 検出方法 – [ 句の追加] を選択して、SEMM Configuration Manager スクリプト レジストリ キー検出規則を追加します。 図 3 に示すように、[ 検出規則] ウィンドウが表示されます。 次の設定を使います。

        • [設定の種類] ドロップダウン メニューから [レジストリ] を選択します。
        • Hive ドロップダウン メニューからHKEY_LOCAL_MACHINEを選択します。
        • [キー] フィールドに 「SOFTWARE\Microsoft\Surface\SEMM」と入力します。
        • [値] フィールドに 「CertName」と入力します。
        • [データ型] ドロップダウン メニューから [文字列] を選択します。
        • [このレジストリ設定は、このアプリケーション ボタンの存在を示すために、次の規則を満たす必要があります] を選択します。
        • [ ] フィールドに、スクリプトの 58 行目に入力した証明書の名前を入力します。
        • [OK] を選択して、[検出規則] ウィンドウを閉じます。

      レジストリ キーを使用して、SEMM に登録されているデバイスを識別します。

      図 3. レジストリ キーを使用して SEMM に登録されているデバイスを識別する

      • [次へ] を選択して、次のページに進みます。

      • ユーザー エクスペリエンス[インストール 動作] ドロップダウン メニューから [ システムのインストール ] を選択します。 ユーザーが証明書の拇印自体を記録して入力する場合は、ログオン要件を [ユーザーがログオンした場合のみ] に設定したままにします。 管理者がユーザーの拇印を入力し、ユーザーに拇印を表示する必要がない場合は、[ログオン要件] ドロップダウン メニューから [ユーザーがログオンしているかどうか] を選択します。

      • 要件 – ConfigureSEMM.ps1 スクリプトは、SEMM を有効にする前に、デバイスが Surface デバイスであることを自動的に確認します。 ただし、SEMM で管理するデバイス以外のデバイスを含むコレクションにこのスクリプト アプリケーションを展開する場合は、このアプリケーションが SEMM で管理する Surface デバイスまたはデバイスでのみ実行されるようにするための要件をここに追加できます。 [次へ] を選択して続行します。

      • 依存関係[追加] を選択して 、[ 依存関係の追加] ウィンドウを 開きます。

        • [ 追加] を選択して、[ 必要なアプリケーションの指定 ] ウィンドウを開きます。

          • [ 依存関係グループ 名] フィールドに SEMM 依存関係の名前を入力します ( SEMM アセンブリなど)。

          • 使用可能なアプリケーションと MSI 展開の種類の一覧から Microsoft Surface UEFI Manager を選択し、[OK] を選択して [必要なアプリケーションの指定] ウィンドウを閉じます。

          • Configuration Manager スクリプトで SEMM を有効にしようとすると、デバイスに Microsoft Surface UEFI Manager を自動的にインストールする場合は、[ 自動インストール ] チェック ボックスをオンのままにします。 [OK] を選択して [依存関係の追加] ウィンドウを閉じます。
      • [次へ] を選択して続行します。

      • 概要 – このページには、展開の種類の作成ウィザード全体で入力した情報が表示されます。 [次へ] を選択して選択内容を確認します。

      • 進行状況 – SEMM スクリプト アプリケーションの展開の種類が追加された進行状況バーと状態がこのページに表示されます。

      • 完了 – プロセスが完了すると、デプロイの種類の作成の確認が表示されます。 [ 閉じる ] を選択して、展開の種類の作成ウィザードを完了します。

    • 概要 – アプリケーションの作成ウィザード全体で入力した情報が表示されます。 [次へ] を選択してアプリケーションを作成します。

    • 進行状況 – アプリケーションがソフトウェア ライブラリに追加されると、進行状況バーと状態がこのページに表示されます。

    • 完了 – アプリケーション作成プロセスが完了すると、アプリケーションの作成が正常に完了したことを確認するメッセージが表示されます。 [ 閉じる ] を選択して、アプリケーションの作成ウィザードを完了します。

Configuration Manager のソフトウェア ライブラリでスクリプト アプリケーションを使用できるようになったら、デバイスまたはコレクションに準備したスクリプトを使用して SEMM を配布および展開できます。 自動的にインストールされる依存関係として Microsoft Surface UEFI Manager アセンブリを構成した場合は、1 つの手順で SEMM を展開できます。 アセンブリを依存関係として構成していない場合は、SEMM を有効にする前に、管理するデバイスにアセンブリをインストールする必要があります。

このスクリプト アプリケーションとエンド ユーザーに表示される構成を使用して SEMM を展開すると、PowerShell スクリプトが起動し、証明書の拇印が PowerShell ウィンドウに表示されます。 ユーザーにこの拇印を記録し、デバイスの再起動後に Surface UEFI からメッセージが表示されたら入力することができます。

または、自動的に再起動し、ユーザーに目に見えない方法でインストールするようにアプリケーションのインストールを構成することもできます。 このシナリオでは、技術者は再起動時に各デバイスに拇印を入力する必要があります。 証明書ファイルにアクセスできる技術者は、証明書を CertMgr で表示することで拇印を読み取ることができます。 CertMgr で拇印を表示する手順については、この記事の SEMM Configuration Manager スクリプトの作成または変更 に関するセクションを参照してください。

これらのスクリプトを使用して Configuration Manager で展開されたデバイスからの SEMM の削除は、Configuration Manager を使用してアプリケーションをアンインストールするのと同じくらい簡単です。 このアクションにより、ResetSEMM.ps1 スクリプトが開始され、SEMM のデプロイ中に使用されたのと同じ証明書ファイルでデバイスが適切に登録解除されます。

注意

Microsoft Surface では、デバイスの登録を解除する必要がある場合にのみ、リセット パッケージを作成することをお勧めします。 通常、これらのリセット パッケージは、シリアル番号で識別される 1 つのデバイスにのみ有効です。 ただし、この証明書を使用して SEMM に登録されている任意のデバイスで動作するユニバーサル リセット パッケージを作成できます。

SEMM にデバイスを登録するために使用した証明書と同様に、ユニバーサル リセット パッケージを慎重に保護することを強くお勧めします。 証明書自体と同様に、このユニバーサル リセット パッケージを使用して、組織の Surface デバイスを SEMM から登録解除できます。

リセット パッケージをインストールすると、サポートされている最も低い値 (LSV) が 1 にリセットされます。 既存の構成パッケージを使用して、デバイスを再登録できます。 所有権が取得される前に、デバイスは証明書の拇印を要求します。

このため、SEMM でのデバイスの再登録には、そのデバイスに新しいパッケージを作成してインストールする必要があります。 このアクションは新しい登録であり、SEMM に既に登録されているデバイスの構成の変更ではないため、所有権を取得する前に証明書の拇印を要求します。