UEFI アセンブリ & Configuration Manager を使用して SEMM を使用してデバイスを管理する

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

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

この記事で説明するプロセスは、以前のバージョンのConfiguration Managerや他のサードパーティの管理ソリューションと連携できますが、Surface UEFI Manager と PowerShell を使用した SEMM の管理は、Configuration Managerの Current Branch でのみサポートされます。

前提条件

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

重要

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

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

Surface UEFI マネージャーをダウンロードする

Configuration Managerを使用した SEMM の管理には、各クライアント Surface デバイスに Surface UEFI Manager をインストールする必要があります。 Surface IT Toolkit ツール ライブラリから Surface UEFI マネージャーをダウンロードできます。

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

クライアント Surface デバイスに UEFI Manager をインストールした後、SEMM を展開し、PowerShell スクリプトを使用して管理できます。 Surface IT Toolkit からスクリプト サンプルを取得します。

Surface UEFI Manager を展開する

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

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

msiexec /i "SurfaceUEFIManagerSetup.msi" /q

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

必要なアセンブリがデバイスにインストールされると、SEMM にデバイスを登録し、Surface UEFI を構成するプロセスが PowerShell スクリプトで実行され、Configuration Managerを使用してスクリプト アプリケーションとしてデプロイされます。 これらのスクリプトは、organizationと環境のニーズに合わせて変更できます。 たとえば、管理された Surface デバイスの複数の構成を異なる部署またはロールに作成できます。 Surface IT Toolkit から SEMM とConfiguration Managerのスクリプトのサンプルをダウンロードする

Configuration Managerを使用して SEMM デプロイを実行するには、次の 2 つの主要なスクリプトが必要です。

  • ConfigureSEMM.ps1Surface IT ToolkitSurface デバイス スクリプトで使用できます。 このスクリプトを使用して、Surface デバイスの構成パッケージを作成し、目的の Surface UEFI 設定を使用して、指定した設定を Surface デバイスに適用し、デバイスを SEMM に登録し、SEMM でのデバイスの登録を識別するために使用するレジストリ キーを設定します。
  • ResetSEMM.ps1Surface IT Toolkit[その他の Surface デバイス スクリプト] で使用できます。 このスクリプトを使用して、Surface デバイスの SEMM をリセットします。このスクリプトは、SEMM から登録を解除し、Surface UEFI 設定に対するコントロールを削除します。

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

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

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

動的 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 証明書の名前とパスワードを入力して、アンインストール アクションを使用してデバイスから SEMM を削除Configuration Managerできるようにする必要があります。

アクセス許可の構成

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 変数を定義する行ごとに、名前または ID を設定することで Surface UEFI 設定が識別され、構成された値が [有効] または [無効] に設定されます。

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

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

設定レジストリ キー

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

HKLM\SOFTWARE\Microsoft\Surface\SEMM

380 から 477 行目にある次のコード フラグメントを使用して、これらのレジストリ キーを記述します。

380	# For 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 の新しい更新プログラムごとに、新しい設定が追加される場合があります。 ShowSettingsOptions.ps1 スクリプトの実行 ( Surface Tools for IT の SEMM_Powershell.zip から) では、使用可能な設定の詳細が提供されます。 ShowSettingsOptions.ps1 が実行されるコンピューターには 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. この記事の前の「Surface UEFI マネージャーを展開する」セクションの手順 1 から手順 5 までを使用して、Create アプリケーション ウィザードを開始します。

  2. Create アプリケーション ウィザードを次のように進めます。

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

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

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

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

    • Create展開の種類ウィザードの手順を次のように実行します。

      • [全般] – [種類] ドロップダウン メニューから [スクリプト インストーラー] を選択します。 [ デプロイの種類の情報を手動で指定する ] オプションが自動的に選択されます。 [ 次へ ] を選択して続行します。
      • [全般情報 ] – 展開の種類 (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 展開の種類] の一覧から [Surface UEFI Manager] を選択し、[OK] を選択して [必要なアプリケーションの指定] ウィンドウを閉じます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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