使用 Windows 容器实现用于 IoT Edge 的 PowerShell 脚本

适用于:“是”图标 IoT Edge 1.1

重要

IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge

了解用于在 Windows 设备上安装、更新或卸载 IoT Edge 的 PowerShell 脚本。

本文所述的命令来自 IoTEdgeSecurityDaemon.ps1 文件,该文件随每个 IoT Edge 版本一起发布。 最新版本的脚本始终在 aka.ms/iotedge-win 中提供。

可使用 Invoke-WebRequest cmdlet 运行任何命令来访问最新的脚本版本。 例如:

. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge

还可下载此脚本或某个特定发行版中的脚本版本来运行命令。 例如:

. <path>\IoTEdgeSecurityDaemon.ps1
Deploy-IoTEdge

提供的脚本已签名以提高安全性。 若要验证签名,可以将脚本下载到设备,然后运行以下 PowerShell 命令:

Get-AuthenticodeSignature "C:\<path>\IotEdgeSecurityDaemon.ps1"

如果签名获得验证,则输出状态为“有效”。

Deploy-IoTEdge

Deploy-IoTEdge 命令下载并部署 IoT Edge 安全守护程序及其依赖项。 该部署命令接受这些通用参数,此外还接受其他一些参数。 有关完整列表,请使用命令 Get-Help Deploy-IoTEdge -full

参数 接受的值 注释
ContainerOs WindowsLinux 如果未指定容器操作系统,则 Windows 是默认值。

对于 Windows 容器,IoT Edge 使用安装中包含的 Moby 容器引擎。 对于 Linux 容器,需要在开始安装之前安装容器引擎。
Proxy 代理 URL 如果设备需要通过代理服务器来连接 Internet,请包含此参数。 有关详细信息,请参阅将 IoT Edge 设备配置为通过代理服务器进行通信
OfflineInstallationPath 目录路径 如果包含此参数,则安装程序将在列出的目录中检查安装时所需的 IoT Edge cab 和 VC 运行时 MSI 文件。 系统会下载该目录中不存在的任何文件。 如果这两个文件在该目录中存在,则无需建立 Internet 连接即可安装 IoT Edge。 还可以通过此参数来使用特定的版本。
InvokeWebRequestParameters 参数和值的哈希表 在安装期间,会发出多个 Web 请求。 请使用此字段来设置这些 Web 请求的参数。 此参数可用于配置代理服务器的凭据。 有关详细信息,请参阅将 IoT Edge 设备配置为通过代理服务器进行通信
RestartIfNeeded 此标志可让部署脚本在无提示的情况下根据需要重启计算机。

Initialize-IoTEdge

Initialize-IoTEdge 命令使用设备连接字符串和操作详细信息配置 IoT Edge。 然后,此命令生成的许多信息将存储在 iotedge\config.yaml 文件中。 该初始化命令接受这些通用参数,此外还接受其他一些参数。 有关完整列表,请使用命令 Get-Help Initialize-IoTEdge -full

参数 接受的值 注释
ManualConnectionString 开关参数默认值。 如果未指定预配类型,则默认使用连接字符串进行手动预配。

声明你要提供设备连接字符串来手动预配设备。
ManualX509 开关参数。 如果未指定预配类型,则默认使用连接字符串进行手动预配。

声明你要提供标识证书和私钥来手动预配设备。
DpsTpm 开关参数。 如果未指定预配类型,则默认使用连接字符串进行手动预配。

声明你要提供设备预配服务 (DPS) 范围 ID 和设备的注册 ID,以通过 DPS 进行预配。
DpsSymmetricKey 开关参数。 如果未指定预配类型,则默认使用连接字符串进行手动预配。

声明你要提供设备预配服务 (DPS) 范围 ID 和设备的注册 ID 来通过 DPS 进行预配,同时提供对称密钥进行证明。
DpsX509 开关参数。 如果未指定预配类型,则默认使用连接字符串进行手动预配。

声明你要提供设备预配服务 (DPS) 范围 ID 和设备的注册 ID 来通过 DPS 进行预配,同时提供 X.509 标识证书和私钥进行证明。
DeviceConnectionString 已在 IoT 中心注册的 IoT Edge 设备中的连接字符串,括在单引号中 如果使用连接字符串进行手动预配,则这是必需项。 如果未在脚本参数中提供连接字符串,系统会提示你提供一个。
IotHubHostName 设备连接到的 IoT 中心的主机名。 如果使用 X.509 证书进行手动预配,则这是必需项。 采用 {hub name}.azure-devices.net 格式。
DeviceId IoT 中心内已注册的设备标识的设备 ID。 如果使用 X.509 证书进行手动预配,则这是必需项。
ScopeId 与 IoT 中心关联的设备预配服务实例中的范围 ID。 进行 DPS 预配所需。 如果未在脚本参数中提供范围 ID,系统会提示你提供一个。
RegistrationId 设备生成的注册 ID 如果使用 TPM 或对称密钥证明,则为 DPS 预配所需。 如果使用 X.509 证书证明,则为可选。
X509IdentityCertificate 设备上的 X.509 设备标识证书的 URI 路径。 如果使用 X.509 证书证明,则是手动或 DPS 预配的必需项。
X509IdentityPrivateKey 设备上的 X.509 设备标识证书密钥的 URI 路径。 如果使用 X.509 证书证明,则是手动或 DPS 预配的必需项。
SymmetricKey 使用 DPS 时用于预配 IoT Edge 设备标识的对称密钥 如果使用对称密钥证明,则为 DPS 预配所需。
ContainerOs WindowsLinux 如果未指定容器操作系统,则 Windows 是默认值。

对于 Windows 容器,IoT Edge 使用安装中包含的 Moby 容器引擎。 对于 Linux 容器,需要在开始安装之前安装容器引擎。
DeviceCACertificate 设备上的 X.509 设备 CA 证书的 URI 路径。 还可在 C:\ProgramData\iotedge\config.yaml 文件中配置。 有关详细信息,请参阅管理 IoT Edge 设备上的证书
DeviceCAPrivateKey 设备上的 X.509 设备 CA 私钥的 URI 路径。 还可在 C:\ProgramData\iotedge\config.yaml 文件中配置。 有关详细信息,请参阅管理 IoT Edge 设备上的证书
InvokeWebRequestParameters 参数和值的哈希表 在安装期间,会发出多个 Web 请求。 请使用此字段来设置这些 Web 请求的参数。 此参数可用于配置代理服务器的凭据。 有关详细信息,请参阅将 IoT Edge 设备配置为通过代理服务器进行通信
AgentImage IoT Edge 代理映像 URI 默认情况下,新的 IoT Edge 安装使用 IoT Edge 代理映像的最新滚动标记。 使用此参数可为映像版本设置特定的标记,或者提供自己的代理映像。 有关详细信息,请参阅了解 IoT Edge 标记
用户名 容器注册表用户名 仅当针对专用注册表中的容器设置了 -AgentImage 参数时,才使用此参数。 提供有权访问注册表的用户名。
密码 安全密码字符串 仅当针对专用注册表中的容器设置了 -AgentImage 参数时,才使用此参数。 提供用于访问注册表的密码。

Update-IoTEdge

参数 接受的值 注释
ContainerOs WindowsLinux 如果未指定容器 OS,则 Windows 是默认值。 对于 Windows 容器,安装中会包含一个容器引擎。 对于 Linux 容器,需要在开始安装之前安装容器引擎。
Proxy 代理 URL 如果设备需要通过代理服务器来连接 Internet,请包含此参数。 有关详细信息,请参阅将 IoT Edge 设备配置为通过代理服务器进行通信
InvokeWebRequestParameters 参数和值的哈希表 在安装期间,会发出多个 Web 请求。 请使用此字段来设置这些 Web 请求的参数。 此参数可用于配置代理服务器的凭据。 有关详细信息,请参阅将 IoT Edge 设备配置为通过代理服务器进行通信
OfflineInstallationPath 目录路径 如果包含此参数,则安装程序将在列出的目录中检查安装时所需的 IoT Edge cab 和 VC 运行时 MSI 文件。 系统会下载该目录中不存在的任何文件。 如果这两个文件在该目录中存在,则无需建立 Internet 连接即可安装 IoT Edge。 还可以通过此参数来使用特定的版本。
RestartIfNeeded 此标志可让部署脚本在无提示的情况下根据需要重启计算机。

Uninstall-IoTEdge

参数 接受的值 注释
Force 在上次尝试卸载失败时,此标志会强制卸载。
RestartIfNeeded 此标志可让卸载脚本在无提示的情况下根据需要重启计算机。

后续步骤

在以下文章中了解如何使用这些命令: