適用於 IoT Edge for Linux on Windows 的 PowerShell 函式

適用於:IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 版本。 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:

  1. 在提升許可權的 PowerShell 工作階段中,執行下列每個命令,以在 Windows 上下載適用於 Linux 的 IoT Edge。

    • 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
    
  2. 在裝置上的 Windows 上安裝適用於 Linux 的 IoT Edge。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    您可以將 和 VHDXDIR="<FULLY_QUALIFIED_PATH>" 參數新增INSTALLDIR="<FULLY_QUALIFIED_PATH>"至 install 命令,以指定自訂安裝和 VHDX 目錄。

  3. 將目標裝置上的執行原則設定為至少 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 DCHP 伺服器範圍中的 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 虛擬機寫入或只讀 - 值: falsetrue
  • 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 命令。

連線-EflowVm

連線-EflowVm 命令會使用 SSH 連線到虛擬機。 唯一允許透過 SSH 連線到虛擬機的帳戶是建立虛擬機的使用者。

此命令僅適用於在主機裝置上執行的 PowerShell 會話。 使用 Windows 管理員 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 DCHP 伺服器範圍中的 IPv4 位址 EFLOW VM 的靜態 Ipv4 位址。
ip4PrefixLength 子網的 IPv4 前置詞長度 Ipv4 子網前綴長度,只有在指定靜態 Ipv4 位址時才有效。
ip4GatewayAddress 子網閘道的 IPv4 位址 網關 Ipv4 位址,只有在指定靜態 Ipv4 位址時才有效。
gpuName GPU 裝置名稱 要用於傳遞的 GPU 裝置名稱。
gpuPassthroughType DirectDeviceAssignmentParaVirtualization 或 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 虛擬機寫入或只讀 - 值: falsetrue
  • 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 Manual 連線 ionStringManualX509DpsTPMDpsX509DpsSymmetricKey 定義您想要用於IoT Edge裝置的布建類型。
devConnString 現有 IoT Edge 裝置的裝置 連接字串 手動布建 IoT Edge 裝置的裝置 連接字串 (Manual 連線 ionString)。
iotHubHostname 現有IoT中樞的主機名 Azure IoT 中樞 用來布建IoT Edge裝置的主機名(ManualX509)。
deviceId 現有 IoT Edge 裝置的裝置識別碼 布建 IoT Edge 裝置的裝置識別碼(ManualX509)。
scopeId 現有 DPS 實例的範圍標識碼。 布建 IoT Edge 裝置的範圍標識碼(DpsTPMDpsX509DpsSymmetricKey)。
symmKey 現有 DPS 註冊的主要金鑰,或使用對稱金鑰註冊之現有 IoT Edge 裝置的主鍵 用於布建 IoT Edge 裝置的對稱金鑰(DpsSymmetricKey)。
registrationId 現有IoT Edge裝置的註冊標識碼 用於布建 IoT Edge 裝置的註冊標識碼(DpsSymmetricKeyDpsTPM)。
identityCertPath 目錄路徑 Windows 主電腦上身分識別憑證的絕對目的地路徑(ManualX509DpsX509)。
identityPrivKeyPath 目錄路徑 Windows 主電腦上身分識別私鑰的絕對來源路徑(ManualX509DpsX509)。
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 DirectDeviceAssignmentParaVirtualization 或 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 TrueFalse 是否已選取選擇性遙測。

如需詳細資訊,請參閱 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: