適用於 IoT Edge for Linux on Windows 的 PowerShell 函式
適用於: IoT Edge 1.5 IoT Edge 1.4
重要
IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 為支援的版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
瞭解在 Windows (EFLOW) 虛擬機上部署、布建及取得適用於 Linux 的 IoT Edge 的 PowerShell 函式。
必要條件
本文所述的命令來自 AzureEFLOW.psm1
檔案,您可以在 目錄中的 WindowsPowerShell
目錄中 C:\Program Files\WindowsPowerShell\Modules\AzureEFLOW
找到。
如果您的 PowerShell 目錄中沒有 AzureEflow 資料夾,請使用下列步驟在 Windows 上下載並安裝適用於 Linux 的 Azure IoT Edge:
在提升權限的 PowerShell 工作階段中,執行下列每個命令以下載 IoT Edge for Linux on Windows。
- X64/AMD64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
- ARM64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
在您的裝置上安裝 IoT Edge for Linux on Windows。
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
您可以將 和
VHDXDIR="<FULLY_QUALIFIED_PATH>"
參數新增INSTALLDIR="<FULLY_QUALIFIED_PATH>"
至 install 命令,以指定自訂安裝和 VHDX 目錄。將目標裝置上的執行原則設定為至少
AllSigned
。Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Add-EflowNetwork
Add-EflowNetwork 命令會將新的網路新增至 EFLOW 虛擬機。 此命令需要兩個參數。
參數 | 接受的值 | 註解 |
---|---|---|
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
vswitchType | 內部 或 外部 | 指派給EFLOW VM的虛擬交換器類型。 |
它會傳回包含四個屬性的物件:
- 名稱
- AllocationMethod
- Cidr
- 類型
如需詳細資訊,請參閱 Get-Help Add-EflowNetwork -full
命令。
Add-EflowVmEndpoint
Add-EflowVmEndpoint 命令會將新的網路端點新增至 EFLOW 虛擬機。 使用選擇性參數來設定靜態IP。
參數 | 接受的值 | 註解 |
---|---|---|
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
vendpointName | 虛擬端點的名稱 | 指派給EFLOW VM的虛擬端點名稱。 |
ip4Address | DHCP 伺服器範圍中的IPv4位址 | EFLOW VM 的靜態 Ipv4 位址。 |
ip4PrefixLength | 子網的 IPv4 前置詞長度 | Ipv4 子網前綴長度,只有在指定靜態 Ipv4 位址時才有效。 |
ip4GatewayAddress | 子網閘道的 IPv4 位址 | 網關 Ipv4 位址,只有在指定靜態 Ipv4 位址時才有效。 |
它會傳回包含四個屬性的物件:
- 名稱
- MacAddress
- HealthStatus
- IpConfiguration
如需詳細資訊,請參閱 Get-Help Add-EflowVmEndpoint -full
命令。
Add-EflowVmSharedFolder
Add-EflowVmSharedFolder 命令允許與 EFLOW 虛擬機共用一或多個 Windows 主機 OS 資料夾。
參數 | 接受的值 | 註解 |
---|---|---|
sharedFoldersJsonPath | String | 共用資料夾 JSON 組態檔的路徑。 |
JSON 組態檔必須具有下列結構:
- sharedFOlderRoot :Windows 根資料夾的路徑,其中包含要與EFLOW 虛擬機共用的所有資料夾。
- hostFolderPath:要與 EFLOW VM 共用之資料夾的相對路徑(父根資料夾)。
- readOnly:定義共享資料夾是否可從 EFLOW 虛擬機寫入或只讀 - 值: false 或 true。
- targetFolderOnGuest :掛接 Windows 主機 OS 資料夾之 EFLOW 虛擬機內的資料夾路徑。
[
{
"sharedFolderRoot": "<shared-folder-root-windows-path>",
"sharedFolders": [
{ "hostFolderPath": "<path-shared-folder>",
"readOnly": "<read-only>",
"targetFolderOnGuest": "<linux-mounting-point>"
}
]
}
]
如需詳細資訊,請參閱 Get-Help Add-EflowVmSharedFolder -full
命令。
Connect-EflowVm
Connect-EflowVm 命令會使用 SSH 連線到虛擬機。 唯一允許透過 SSH 連線至虛擬機器的帳戶,是建立虛擬機器的使用者。
此命令僅適用於在主機裝置上執行的 PowerShell 會話。 使用 Windows Admin Center 或 PowerShell ISE 時將無法運作。
如需詳細資訊,請參閱 Get-Help Connect-EflowVm -full
命令。
Copy-EflowVmFile
Copy-EflowVmFile 命令會使用 SCP 將檔案複製到虛擬機或從虛擬機複製檔案。 使用選擇性參數來指定來源和目的地檔案路徑以及複製的方向。
使用者 iotedge-user 必須具有任何源目錄的讀取許可權,或虛擬機上任何目的地目錄的寫入許可權。
參數 | 接受的值 | 註解 |
---|---|---|
fromFile | 代表檔案路徑的字串 | 定義要讀取的檔案。 |
toFile | 代表檔案路徑的字串 | 定義要寫入的檔案。 |
pushFile | 無 | 此旗標表示複製方向。 如果存在,命令會將檔案推送至虛擬機。 如果不存在,命令會從虛擬機提取檔案。 |
如需詳細資訊,請參閱 Get-Help Copy-EflowVMFile -full
命令。
Deploy-Eflow
Deploy-Eflow 命令是主要部署方法。 部署命令會建立虛擬機、布建檔案,以及部署IoT Edge代理程式模組。 雖然不需要任何參數,但可以在建立期間用來修改虛擬機的設定。
參數 | 接受的值 | 註解 |
---|---|---|
acceptEula | 是 或 否 | 接受/拒絕 EULA 並略過 EULA 提示的快捷方式。 |
acceptOptionalTelemetry | 是 或 否 | 接受/拒絕選擇性遙測並略過遙測提示的快捷方式。 |
cpuCount | 介於 1 與裝置 CPU 核心之間的整數值 | VM 的 CPU 核心數目。 預設值:1 個虛擬核心。 |
memoryInMB | 介於 1024 與裝置可用記憶體數量上限之間的整數 偶數 值 | 為 VM 配置的記憶體。 默認值:1024 MB。 |
vmDiskSize | 介於 21 GB 到 2 TB 之間 | 動態擴充虛擬硬碟的邏輯磁碟大小上限。 預設值:29 GB。 注意:可以使用 vmDiskSize 或 vmDataSize,但不能同時使用這兩者。 |
vmDataSize | 介於 2 GB 到 2 TB 之間 | 結果硬碟的數據分割大小上限,以 GB 為單位。 預設值:10 GB。 注意:可以使用 vmDiskSize 或 vmDataSize,但不能同時使用這兩者。 |
vmLogSize | 小型 或 大型 | 指定記錄數據分割大小。 Small = 1GB,Large = 6GB。 預設值:Small。 |
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
vswitchType | 內部 或 外部 | 指派給EFLOW VM的虛擬交換器類型。 |
ip4Address | DHCP 伺服器範圍中的IPv4位址 | EFLOW VM 的靜態 Ipv4 位址。 |
ip4PrefixLength | 子網的 IPv4 前置詞長度 | Ipv4 子網前綴長度,只有在指定靜態 Ipv4 位址時才有效。 |
ip4GatewayAddress | 子網閘道的 IPv4 位址 | 網關 Ipv4 位址,只有在指定靜態 Ipv4 位址時才有效。 |
gpuName | GPU 裝置名稱 | 要用於傳遞的 GPU 裝置名稱。 |
gpuPassthroughType | DirectDeviceAssignment、 ParaVirtualization 或 none (僅限 CPU) | GPU 傳遞類型 |
gpuCount | 介於 1 與裝置 GPU 核心數目之間的整數值 | VM 的 GPU 裝置數目。 注意:如果使用 ParaVirtualization,請務必設定 gpuCount = 1 |
customSsh | 無 | 判斷使用者是否要使用其自定義 OpenSSH.Client 安裝。 如果存在,ssh.exe必須可供 EFLOW PSM 使用 |
sharedFoldersJsonPath | String | 共用資料夾 JSON 組態檔的路徑。 |
如需詳細資訊,請參閱 Get-Help Deploy-Eflow -full
命令。
Get-EflowHostConfiguration
Get-EflowHostConfiguration 命令會傳回主機組態。 此命令不接受任何參數。 它會傳回包含四個屬性的物件:
- FreePhysicalMemoryInMB
- NumberOfLogicalProcessors
- DiskInfo
- GpuInfo
如需詳細資訊,請參閱 Get-Help Get-EflowHostConfiguration -full
命令。
Get-EflowLogs
Get-EflowLogs 命令會從 Windows 部署和安裝上的適用於 Linux 的 IoT Edge 收集並配套記錄。 它會以資料夾的形式輸出配套記錄 .zip
。
如需詳細資訊,請參閱 Get-Help Get-EflowLogs -full
命令。
Get-EflowNetwork
Get-EflowNetwork 命令會傳回指派給 EFLOW 虛擬機的網路清單。 使用選擇性參數來取得特定網路。
參數 | 接受的值 | 註解 |
---|---|---|
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
它會傳回包含四個屬性的物件清單:
- 名稱
- AllocationMethod
- Cidr
- 類型
如需詳細資訊,請參閱 Get-Help Get-EflowNetwork -full
命令。
Get-EflowVm
Get-EflowVm 命令會傳回虛擬機目前的組態。 此命令不接受任何參數。 它會傳回包含四個屬性的物件:
- VmConfiguration
- VmPowerState
- EdgeRuntimeVersion
- EdgeRuntimeStatus
- SystemStatistics
若要在可讀取清單中檢視特定屬性,請執行 Get-EflowVM
命令並展開 屬性。 例如:
Get-EflowVM | Select -ExpandProperty VmConfiguration | Format-List
如需詳細資訊,請參閱 Get-Help Get-EflowVm -full
命令。
Get-EflowVmAddr
Get-EflowVmAddr 命令可用來查詢虛擬機目前的IP和MAC位址。 此命令的存在是為了說明IP和MAC位址可能會隨著時間而變更的事實。
如需其他資訊,請使用 命令 Get-Help Get-EflowVmAddr -full
。
Get-EflowVmEndpoint
Get-EflowVmEndpoint 命令會傳回指派給 EFLOW 虛擬機的網路端點清單。 使用選擇性參數來取得特定的網路端點。
參數 | 接受的值 | 註解 |
---|---|---|
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
它會傳回包含四個屬性的物件清單:
- 名稱
- MacAddress
- HealthStatus
- IpConfiguration
如需詳細資訊,請參閱 Get-Help Get-EflowVmEndpoint -full
命令。
Get-EflowVmFeature
Get-EflowVmFeature 命令會傳回在 Windows 功能上啟用適用於 Linux 的 IoT Edge 狀態。
參數 | 接受的值 | 註解 |
---|---|---|
功能 | DpsTpm | 要查詢的功能名稱。 |
如需詳細資訊,請參閱 Get-Help Get-EflowVmFeature -full
命令。
Get-EflowVmName
Get-EflowVmName 命令會傳回虛擬機目前的主機名。 此命令的存在是為了說明 Windows 主機名可能會隨著時間而變更的事實。
如需詳細資訊,請參閱 Get-Help Get-EflowVmName -full
命令。
Get-EflowVmSharedFolder
Get-EflowVmSharedFolder 命令會傳回與 EFLOW 虛擬機共用的一或多個 Windows 主機 OS 資料夾的相關信息。
參數 | 接受的值 | 註解 |
---|---|---|
sharedfolderRoot | String | Windows 主機 OS 共用根資料夾的路徑。 |
hostFolderPath | 字串或清單 | Windows 主機 OS 共用資料夾的相對路徑/路徑(根資料夾)。 |
它會傳回包含三個屬性的物件清單:
- hostFolderPath:與 EFLOW VM 共用之資料夾的相對路徑(至父根資料夾)。
- readOnly:定義共享資料夾是否可從 EFLOW 虛擬機寫入或只讀 - 值: false 或 true。
- targetFolderOnGuest:掛接 Windows 資料夾之 EFLOW 虛擬機內的資料夾路徑。
如需詳細資訊,請參閱 Get-Help Get-EflowVmSharedFolder -full
命令。
Get-EflowVmTelemetryOption
Get-EflowVmTelemetryOption 命令會顯示虛擬機內遙測(選擇性或必要)的狀態。
如需詳細資訊,請參閱 Get-Help Get-EflowVmTelemetryOption -full
命令。
Get-EflowVmTpmProvisioningInfo
Get-EflowVmTpmProvisioningInfo 命令會傳回 TPM 布建資訊。 此命令不接受任何參數。 它會傳回包含兩個屬性的物件:
- 簽署金鑰
- 註冊識別碼
如需詳細資訊,請參閱 Get-Help Get-EflowVmTpmProvisioningInfo -full
命令。
Invoke-EflowVmCommand
Invoke-EflowVMCommand 命令會在虛擬機內執行 Linux 命令,並傳回輸出。 此命令僅適用於傳回有限輸出的Linux命令。 它不能用於需要使用者互動或無限期執行的Linux命令。
下列選擇性參數可用來事先指定命令。
參數 | 接受的值 | 註解 |
---|---|---|
命令 | String | 要在 VM 中執行的命令。 |
ignoreError | 無 | 如果存在此旗標,請忽略命令的錯誤。 |
如需詳細資訊,請參閱 Get-Help Invoke-EflowVmCommand -full
命令。
Provision-EflowVm
Provision-EflowVm 命令會將 IoT Edge 裝置的布建資訊新增至虛擬機的 IoT Edge config.yaml
檔案。
參數 | 接受的值 | 註解 |
---|---|---|
provisioningType | ManualConnectionString、ManualX509、DpsTPM、DpsX509 或 DpsSymmetricKey | 定義您想要用於IoT Edge裝置的布建類型。 |
devConnString | 現有 IoT Edge 裝置的裝置 連接字串 | 手動布建 IoT Edge 裝置的裝置 連接字串 (ManualConnectionString)。 |
iotHubHostname | 現有IoT中樞的主機名 | Azure IoT 中樞 用來布建IoT Edge裝置的主機名(ManualX509)。 |
deviceId | 現有 IoT Edge 裝置的裝置識別碼 | 布建 IoT Edge 裝置的裝置識別碼(ManualX509)。 |
scopeId | 現有 DPS 實例的範圍標識碼。 | 布建 IoT Edge 裝置的範圍標識碼(DpsTPM、DpsX509 或 DpsSymmetricKey)。 |
symmKey | 現有 DPS 註冊的主要金鑰,或使用對稱金鑰註冊之現有 IoT Edge 裝置的主鍵 | 用於布建 IoT Edge 裝置的對稱金鑰(DpsSymmetricKey)。 |
registrationId | 現有IoT Edge裝置的註冊標識碼 | 用於布建 IoT Edge 裝置的註冊標識碼(DpsSymmetricKey、 DpsTPM)。 |
identityCertPath | 目錄路徑 | Windows 主電腦上身分識別憑證的絕對目的地路徑(ManualX509、 DpsX509)。 |
identityPrivKeyPath | 目錄路徑 | Windows 主電腦上身分識別私鑰的絕對來源路徑(ManualX509、 DpsX509)。 |
globalEndpoint | 裝置端點 URL | 要用於 DPS 布建之全域端點的 URL。 |
如需詳細資訊,請參閱 Get-Help Provision-EflowVm -full
命令。
Remove-EflowNetwork
Remove-EflowNetwork 命令會移除連結至 EFLOW 虛擬機的現有網路。 此命令會採用一個參數。
參數 | 接受的值 | 註解 |
---|---|---|
vswitchName | 虛擬交換器的名稱 | 指派給EFLOW VM的虛擬交換器名稱。 |
如需詳細資訊,請參閱 Get-Help Remove-EflowNetwork -full
命令。
Remove-EflowVmEndpoint
Remove-EflowVmEndpoint 命令會移除連結至 EFLOW 虛擬機的現有網路端點。 此命令會採用一個參數。
參數 | 接受的值 | 註解 |
---|---|---|
vendpointName | 虛擬端點的名稱 | 指派給EFLOW VM的虛擬端點名稱。 |
如需詳細資訊,請參閱 Get-Help Remove-EflowVmEndpoint -full
命令。
Remove-EflowVmSharedFolder
Remove-EflowVmSharedFolder 命令會停止將 Windows 主機 OS 資料夾共用至 EFLOW 虛擬機。 此命令需要兩個參數。
參數 | 接受的值 | 註解 |
---|---|---|
sharedfolderRoot | String | Windows 主機 OS 共用根資料夾的路徑。 |
hostFolderPath | 字串或清單 | Windows 主機 OS 共用資料夾的相對路徑/路徑(根資料夾)。 |
如需詳細資訊,請參閱 Get-Help Remove-EflowVmSharedFolder -full
命令。
Set-EflowVM
Set-EflowVM 命令會使用要求的屬性來更新虛擬機組態。 使用選擇性參數來定義虛擬機的特定組態。
參數 | 接受的值 | 註解 |
---|---|---|
cpuCount | 介於 1 與裝置 CPU 核心之間的整數值 | VM 的 CPU 核心數目。 |
memoryInMB | 介於 1024 與裝置可用記憶體數量上限之間的整數值 | 為 VM 配置的記憶體。 |
gpuName | GPU 裝置名稱 | 要用於傳遞的 GPU 裝置名稱。 |
gpuPassthroughType | DirectDeviceAssignment、 ParaVirtualization 或 none (無傳遞) | GPU 傳遞類型 |
gpuCount | 介於 1 與裝置 GPU 核心之間的整數值 | VM 的 GPU 裝置數目 注意:只有在使用 DirectDeviceAssignment 時才有效 |
無頭的 | 無 | 如果存在此旗標,它會判斷使用者是否需要確認是否要發出安全性警告。 |
如需詳細資訊,請參閱 Get-Help Set-EflowVM -full
命令。
Set-EflowVmDNSServers
Set-EflowVmDNSServers 命令會設定 EFLOW 虛擬機的 DNS 伺服器。
參數 | 接受的值 | 註解 |
---|---|---|
vendpointName | 虛擬端點名稱的字串值 | 使用 Get-EflowVmEndpoint 取得指派給 EFLOW VM 的虛擬介面。 例如 DESKTOP-CONTOSO-EflowInterface |
dnsServers | 要用於名稱解析的 DNS 伺服器 IPAddress 清單 | 例如 @(“10.0.10.1”) |
如需詳細資訊,請參閱 Get-Help Set-EflowVmDNSServers -full
命令。
Set-EflowVmFeature
Set-EflowVmFeature 命令會啟用或停用 Windows 功能上適用於 Linux 的 IoT Edge 狀態。
參數 | 接受的值 | 註解 |
---|---|---|
功能 | DpsTpm,Defender | 要切換的功能名稱。 |
enable | 無 | 如果存在此旗標,命令會啟用此功能。 |
如需詳細資訊,請參閱 Get-Help Set-EflowVmFeature -full
命令。
Set-EflowVmTelemetryOption
Set-EflowVmTelemetryOption 命令會啟用或停用虛擬機內的選擇性遙測。
參數 | 接受的值 | 註解 |
---|---|---|
optionalTelemetry | True 或 False | 是否已選取選擇性遙測。 |
如需詳細資訊,請參閱 Get-Help Set-EflowVmTelemetryOption -full
命令。
Start-EflowVm
Start-EflowVm 命令會啟動虛擬機。 如果虛擬機已啟動,則不會採取任何動作。
如需詳細資訊,請參閱 Get-Help Start-EflowVm -full
命令。
Stop-EflowVm
Stop-EflowVm 命令會停止虛擬機。 如果虛擬機已經停止,則不會採取任何動作。
如需詳細資訊,請參閱 Get-Help Stop-EflowVm -full
命令。
Verify-EflowVm
Verify-EflowVm 命令是公開的函式,可檢查是否已在 Windows 虛擬機上建立適用於 Linux 的 IoT Edge。 它只需要一般參數,如果虛擬機已建立,則會傳回 True;如果不是,則會傳回 False。
如需詳細資訊,請參閱 Get-Help Verify-EflowVm -full
命令。
下一步
在下列文章中,瞭解如何使用這些命令在 Windows 上安裝和布建適用於 Linux 的 IoT Edge: