使用 UEFI 元件 & Configuration Manager 使用 SEMM 管理裝置
Surface UEFI 裝置的 Surface Enterprise 管理模式 (SEMM) 功能可讓系統管理員管理和協助保護 Surface UEFI 設定的設定。 對於大部分的組織而言,此程式是透過使用 Surface IT 工具組中的 UEFI Configurator 工具建立 Windows Installer (.msi) 套件來完成。 然後,這些套件會執行或部署至用戶端 Surface 裝置,以在 SEMM 中註冊裝置,以及更新 Surface UEFI 設定組態。
對於具有 Configuration Manager 的組織,有一個替代方法是使用 Surface UEFI 設定器 .msi 程式來部署和管理 SEMM。 Surface UEFI Manager 是輕量型安裝程式,可在裝置上提供 SEMM 管理所需的元件。 當您在受管理的用戶端上使用 Surface UEFI Manager 安裝這些元件時,您可以透過部署為應用程式的 PowerShell 腳稿 Configuration Manager 來管理 SEMM。 這麼做就不需要使用外部 Surface UEFI 設定器工具。
注意
雖然本文中所述的程式可能適用於舊版的 Configuration Manager 或其他第三方管理解決方案,但只有 Configuration Manager 最新分支才支援使用 Surface UEFI Manager 和 PowerShell 管理 SEMM。
必要條件
開始本文所述的程式之前,請先熟悉下列技術和工具:
重要
您也需要存取您想要用來保護 SEMM 的憑證。 如需此憑證需求的詳細資訊,請參閱 SEMM 憑證需求。
請務必將此憑證保存在安全的位置並正確備份。 如果此憑證遺失或無法使用,就無法重設 Surface UEFI、變更受控 Surface UEFI 設定,或從已註冊的 Surface 裝置移除 SEMM。
下載 Surface UEFI Manager
使用 Configuration Manager 管理 SEMM 需要在每個用戶端 Surface 裝置上安裝 Surface UEFI Manager。 您可以從 Surface IT 工具組工具庫下載 Surface UEFI Manager。
下載適用於 Configuration Manager的 SEMM 腳本
在用戶端 Surface 裝置上安裝 UEFI 管理員之後,就可以使用 PowerShell 腳本來部署和管理 SEMM。 從 Surface IT 工具組取得腳本範例。
部署 Surface UEFI 管理員
Surface UEFI Manager 的部署是典型的應用程式部署。 Surface UEFI Manager 安裝程式檔案是標準 Windows Installer 檔案,您可以使用 標準無訊息選項進行安裝。
安裝 Surface UEFI Manager 的命令如下所示。
msiexec /i "SurfaceUEFIManagerSetup.msi" /q
卸載 Surface UEFI Manager 的命令如下所示。
msiexec /x {541DA890-1AEB-446D-B3FD-D5B3BB18F9AF} /q
若要建立新的應用程式,並將其部署至包含 Surface 裝置的集合,請執行下列步驟:
從 [開始] 畫面或 [開始] 功能表開啟 [Configuration Manager 控制台]。
選取視窗左下角的 [ 軟體連結庫 ]。
展開 [軟體 連結庫 ] 的 [應用程式管理] 節點,然後選取 [ 應用程式]。
選取視窗頂端 [常用] 索引標籤底下的 [建立應用程式] 按鈕。 這會啟動 [建立應用程式精靈]。
[建立應用程式精靈] 會顯示一系列步驟:
一般 – 預設會選取 [ 從安裝檔案自動偵測此應用程式的相關信息 ] 選項。 在 [ 類型] 欄位中,預設也會選取 Windows Installer (.msi 檔案) 。 選取 [瀏覽 ] 以流覽至 ,然後選 取 [SurfaceUEFIManagerSetup.msi],然後選取 [ 下一步]。
注意
SurfaceUEFIManagerSetup.msi 的位置必須位於網路共用上,且位於不包含其他檔案的資料夾中。 無法使用本機檔案位置。
匯入資訊 – [建立應用程式精靈] 會剖析 .msi 檔案,並讀取 [ 應用程式名稱 ] 和 [產品代碼]。 SurfaceUEFIManagerSetup.msi 應列為 [ 內容檔案] 一行下的唯一檔案,如圖 1 所示。 選 取 [下一步 ] 繼續進行。
圖 1。 來自 Surface UEFI Manager 安裝程式的資訊會自動剖析
一般資訊 – 您可以修改應用程式的名稱以及發行者和版本的相關信息,或在此頁面上新增批注。 Surface UEFI Manager 的安裝命令會顯示在 [安裝程式] 字段中。 安裝系統的預設安裝行為可讓 Surface UEFI Manager 安裝 SEMM 所需的元件,即使使用者未登入 Surface 裝置也一樣。 選 取 [下一步 ] 繼續進行。
摘要 – 在 [匯入資訊 ] 步驟中 剖析的資訊,以及您從 [ 一般資訊 ] 步驟選取的專案,都會顯示在此頁面上。 選 取 [下一步 ] 以確認您的選取專案並建立應用程式。
進度 – 在應用程式匯入並新增至軟體連結庫時顯示進度列和狀態。
完成 – 應用程式建立程式完成時,會顯示成功建立應用程式的確認。 選取 [關閉 ] 以完成 [建立應用程式精靈]。
在 Configuration Manager 中建立應用程式之後,您可以將它發佈到發佈點,並將它部署到集合,包括您的 Surface 裝置。 此應用程式不會在 Surface 裝置上安裝或啟用 SEMM。 它只會提供使用 PowerShell 腳本啟用 SEMM 所需的元件。
如果您不想在不會使用 SEMM 管理的裝置上安裝 Surface UEFI Manager 元件,您可以將 Surface UEFI Manager 設定為 SEMM Configuration Manager 腳本的相依性。 This scenario is covered in the Deploy SEMM Configuration Manager Scripts section later in this article.
建立或修改 SEMM Configuration Manager 腳本
在裝置上安裝必要的元件之後,在 SEMM 中註冊裝置和設定 Surface UEFI 的程式會使用 PowerShell 腳本完成,並部署為具有 Configuration Manager 的腳本應用程式。 您可以修改這些文稿,以符合組織和環境的需求。 例如,您可以為不同部門或角色中的受控 Surface 裝置建立多個組態。 從 Surface IT 工具組下載適用於 SEMM 和 Configuration Manager 的腳本範例
您需要兩個主要文稿,才能使用 Configuration Manager 執行 SEMM 部署:
- ConfigureSEMM.ps1 – 可在 Surface IT 工具組的 Surface 裝置腳本下取得。 使用此腳本來建立 Surface 裝置的組態套件,其中包含您想要的 Surface UEFI 設定,以將指定的設定套用至 Surface 裝置、在 SEMM 中註冊裝置,以及設定用來識別 SEMM 中裝置註冊的登錄機碼。
- ResetSEMM.ps1 – 可在 Surface IT 工具組的其他 Surface 裝置腳本下使用。 使用此腳本在 Surface 裝置上重設 SEMM,此裝置會從 SEMM 取消註冊,並移除 Surface UEFI 設定的控件。
範例腳本包含如何設定 Surface UEFI 設定的範例,以及如何控制這些設定的許可權。 您可以修改這些設定來保護 Surface UEFI,並根據您的環境需求設定 Surface UEFI 設定。 本文的下列各節說明 ConfigureSEMM.ps1 腳本,並探索您需要對腳本進行修改,以符合您的需求。
注意
SEMM Configuration Manager 腳本和導出的 SEMM 憑證檔案 (.pfx) 應該放在沒有其他檔案的相同資料夾中,才能新增至 Configuration Manager。
在支援的裝置上管理 USB 埠
您可以透過下列其中一種方法來實作動態 USB-C 停用:
- 在 Surface IT 工具組中使用 UEFI 設定器透過 UI。
- 透過PowerShell腳本,如管理 Surface 裝置上的USB埠中所述
本文的下列各節說明 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 中註冊裝置。 此腳本會向使用者顯示這些數位,讓用戶或技術人員能夠在系統重新啟動之前記錄這些數位,以在 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 檢視指紋,請遵循下列程式:
- 以滑鼠右鍵按兩下 .pfx 檔案,然後選取 [ 開啟]。
- 展開瀏覽窗格中的資料夾。
- 選 取 [憑證]。
- 以滑鼠右鍵按兩下主窗格中的憑證,然後選取 [ 開啟]。
- 選取 [ 詳細數據] 索 引標籤。
- [顯示] 下拉功能表中必須選取 [全部] 或 [屬性]。
- 選取 [ 指紋] 欄位。
注意
您也必須在 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 變數會藉由設定名稱或識別符來識別 Surface UEFI 設定,然後將許可權設定為下列其中一個值:
- $ownerOnly – 修改此設定的許可權只會授與 SEMM。
- $ownerAndLocalUser – 修改此設定的許可權會授與本機用戶開機至 Surface UEFI 以及 SEMM。
您可以在本文的設定名稱和識別碼一節中找到 Surface UEFI 可用設定 名稱和 識別碼的相關信息。
進行設定
您將指定 Surface UEFI 設定之腳本的第二個區域是 ConfigureSEMM.ps1 腳本的 [設定設定 ] 區域, 其會設定每個設定是否已啟用或停用。 範例文稿包含將所有設定設定為其預設值的指示。 腳本接著會提供明確的指示,以停用 PXE 開機的 IPv6,並將 Surface UEFI 系統管理員密碼保持不變。 您可以從範例腳本中第 291 行到第 335 行的 #Configure Settings 批注開始,找到此區域。 區域如下所示。
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 設定是透過設定名稱或標識符來識別,而設定的值會設定為 [ 已啟用 ] 或 [ 停用]。
如果您不想變更 Surface UEFI 設定的組態,例如,若要確保 Surface UEFI 系統管理員密碼不會透過將所有 Surface UEFI 設定重設為其預設值的動作來清除,您可以使用 ClearConfiguredValue () 來強制執行此設定不會改變。 在範例腳本中,這會用於第 323 行,以防止清除範例腳本中依其設定標識碼 501 識別的 Surface UEFI 系統管理員密碼。
您可以在本文稍後的設定名稱和識別碼一節中找到 Surface UEFI 可用設定 名稱和 識別碼的相關信息。
設定登錄機碼
為了識別 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 }
設定名稱和識別碼
若要設定 Surface UEFI 設定或 Surface UEFI 設定的許可權,您必須依其設定名稱或設定識別符來參照每個設定。 透過 Surface UEFI 的每個新更新,可能會新增新的設定。 從適用於 IT) 的 Surface Tools 中的 SEMM_Powershell.zip 執行 ShowSettingsOptions.ps1 腳稿 (提供可用設定的詳細數據。 執行 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,請使用下列程式:
在本文稍早的 部署 Surface UEFI Manager 一節中,使用步驟 1 到步驟 5 啟動建立應用程式精靈。
繼續進行 [建立應用程式精靈],如下所示:
一般 – 選取 [手動指定應用程式資訊],然後選取 [ 下一步]。
一般資訊 – 輸入應用程式 (的名稱,例如 SEMM) 以及您想要的任何其他資訊,例如此頁面上的發行者、版本或批注。 選 取 [下一步 ] 繼續進行。
應用程式類別目錄 – 此頁面上的欄位可以保留預設值。 選取 [下一步]。
部署類型 – 選取 [新增 ] 以啟動 [建立部署類型精靈]。
繼續進行 [建立部署類型精靈] 的步驟,如下所示:
- 一般 – 從 [類型] 下拉功能表中選取 [腳本安裝程式]。 將會自動選取 [手動指定部署類型資訊 ] 選項。 選 取 [下一步 ] 繼續進行。
- 一般資訊 – 輸入部署類型的名稱 (例如 SEMM 設定腳本) ,然後選取 [ 下一步 ] 繼續。
- 內容 – 選取 [內容位置] 字段旁的 [流覽],然後選取您的 SEMM Configuration Manager 腳本所在的資料夾。 在 [ 安裝程式] 欄位中,輸入本文稍早找到的 安裝命令 。 在 [ 卸載程式] 字段中,輸入本文稍早找到的 卸載命令 (如圖 2) 所示。 選 取 [下一步 ] 以移至下一頁。
圖 2. 將 SEMM Configuration Manager 腳本設定為安裝和卸載命令
偵測方法 – 選取 [新增子句] 以新增 SEMM Configuration Manager 腳本登錄機碼偵測規則。 [ 偵測規則] 視窗隨即顯示,如圖 3 所示。 使用下列設定:
- 從 [設定類型] 下拉功能表中選取 [登錄]。
- 從 [Hive] 下拉功能表中選取 [HKEY_LOCAL_MACHINE]。
- 在 [金鑰] 欄位中輸入 SOFTWARE\Microsoft\Surface\SEMM。
- 在 [值] 欄位中輸入 CertName。
- 從 [數據類型] 下拉功能表中選取 [字串]。
- 選取 [ 此登錄設定必須滿足下列規則,以指出此應用程式是否存在] 按鈕。
- 在 [ 值 ] 字段中,輸入您在腳本第 58 行中輸入的憑證名稱。
- 選取 [確定 ] 以關閉 [ 偵測規則] 視窗。
圖 3. 使用登錄機碼來識別在 SEMM 中註冊的裝置
選 取 [下一步 ] 以繼續進行下一頁。
用戶體驗 – 從 [安裝行為] 下拉功能表中選取 [安裝系統]。 如果您要讓使用者自行錄製並輸入憑證指紋,請將登入需求保留為 [只有當使用者登入時] 。 如果您想要讓系統管理員輸入使用者的指紋,且使用者不需要看到指紋,請從 [登入需求] 下拉功能表中選取 [使用者是否登入]。
需求 – ConfigureSEMM.ps1 腳本會在嘗試啟用 SEMM 之前,自動驗證裝置是否為 Surface 裝置。 不過,如果您想要將此腳本應用程式部署至集合,而這些裝置不是要使用 SEMM 管理的裝置,您可以在這裡新增需求,以確保此應用程式只會在您想要使用 SEMM 管理的 Surface 裝置或裝置上執行。 選 取 [下一步 ] 繼續。
相依性 – 選取 [新增 ] 以開啟 [ 新增相依性 ] 視窗。
選 取 [新增 ] 以開啟 [ 指定必要應用程式 ] 視窗。
在 [ 相依性組名] 字 段中輸入 SEMM 相依性的名稱 (例如 SEMM 元件) 。
從 [可用的應用程式] 清單和 MSI 部署類型中選取 [Surface UEFI 管理員],然後選取 [確定] 以關閉 [指定必要應用程式] 視窗。
- 如果您想要在嘗試使用 Configuration Manager 腳本啟用 SEMM 時自動在裝置上安裝 Surface UEFI Manager,請保留選取 [自動安裝] 複選框。 選取 [確定 ] 以關閉 [ 新增相依性 ] 視窗。
選 取 [下一步 ] 繼續進行。
摘要 – 您在 [建立部署類型精靈] 中輸入的資訊會顯示在此頁面上。 選 取 [下一步 ] 以確認您的選擇。
進度 – 此頁面上會顯示為 SEMM 腳稿應用程式新增部署類型的進度列和狀態。
完成 – 完成時,會顯示部署類型建立的確認。 選取 [關閉 ] 以完成 [建立部署類型精靈]。
摘要 – 您在 [建立應用程式精靈] 中輸入的資訊隨即顯示。 選 取 [下一步 ] 以建立應用程式。
進度 – 新增應用程式至軟體連結庫時的進度列和狀態會顯示在此頁面上。
完成 – 應用程式建立程式完成時,會顯示成功建立應用程式的確認。 選取 [關閉 ] 以完成 [建立應用程式精靈]。
在 Configuration Manager 的軟體連結庫中提供腳本應用程式之後,您可以使用您準備給裝置或集合的腳本來散發和部署 SEMM。 如果您已將 Surface UEFI Manager 元件設定為將自動安裝的相依性,您可以在單一步驟中部署 SEMM。 如果您尚未將元件設定為相依性,則必須先將它們安裝在您想要管理的裝置上,才能啟用 SEMM。
當您使用此腳本應用程式部署 SEMM,以及使用者可看見的組態時,PowerShell 腳本會啟動,而憑證的指紋將會由 PowerShell 視窗顯示。 您可以讓使用者記錄此指紋,並在裝置重新啟動後由 Surface UEFI 提示時輸入它。
或者,您可以將應用程式安裝設定為自動重新啟動,以及對用戶進行隱含安裝。 在此案例中,技術人員必須在每個裝置重新啟動時輸入指紋。 任何可存取憑證檔案的技術人員都可以透過使用 CertMgr 檢視憑證來讀取指紋。 使用 CertMgr 檢視指紋的指示位於本文的建立或修改 SEMM Configuration Manager 腳本一節。
使用這些腳本從使用 Configuration Manager 部署的裝置移除 SEMM,就像使用 Configuration Manager 卸載應用程式一樣簡單。 此動作會啟動 ResetSEMM.ps1 腳本,並使用部署 SEMM 期間所使用的相同憑證檔案正確取消註冊裝置。
注意
Surface 建議您只有在需要取消註冊裝置時,才建立重設套件。 這些重設套件通常只適用於一個裝置,並以其序號識別。 不過,您可以建立通用重設套件,以適用於使用此憑證在 SEMM 中註冊的任何裝置。
強烈建議您像在 SEMM 中註冊裝置時所用的憑證一樣小心地保護您的通用重設套件。 請記住,就像憑證本身一樣,此通用重設套件可用來從 SEMM 取消註冊您組織的任何 Surface 裝置。
當您安裝重設套件時,LSV (的最低支援值) 會重設為1的值。 您可以使用現有的元件重新註冊裝置。 裝置會在取得擁有權之前提示您輸入憑證指紋。
因此,在 SEMM 中重新註冊裝置需要在該裝置上建立並安裝新的套件。 因為此動作是新的註冊,而不是在已在 SEMM 中註冊的裝置上變更設定,所以裝置會在取得擁有權之前提示輸入憑證指紋。