Поделиться через


Функции PowerShell для IoT Edge для Linux в Windows

Область применения: Флажок IoT Edge 1.4 IoT Edge 1.4

Внимание

Поддерживаются выпуски Azure IoT Edge 1.5 LTS и IoT Edge 1.4. IoT Edge 1.4 LTS достигает окончания службы 12 ноября 2024 года. При использовании более раннего выпуска см. раздел Обновление IoT Edge.

Общие сведения о функциях PowerShell, используемых для развертывания, подготовки и получения состояния виртуальной машины IoT Edge для Linux в Windows (EFLOW).

Необходимые компоненты

Описанные в этой статье команды взяты из файла AzureEFLOW.psm1, который можно найти в каталоге WindowsPowerShell, расположенном по адресу C:\Program Files\WindowsPowerShell\Modules\AzureEFLOW.

Если у вас нет папки AzureEflow в каталоге PowerShell, выполните следующие действия, чтобы скачать и установить Azure IoT Edge для Linux в Windows.

  1. В сеансе PowerShell с повышенными привилегиями выполните каждую из следующих команд, чтобы скачать IoT Edge для Linux в 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
    
  2. Установите IoT Edge для Linux на Windows на ваше устройство.

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

    Можно указать нестандартные каталоги для установки и VHDX, добавив параметры INSTALLDIR="<FULLY_QUALIFIED_PATH>" и VHDXDIR="<FULLY_QUALIFIED_PATH>" в приведенную выше команду установки.

  3. Установите политику выполнения на целевом устройстве по крайней мере AllSigned.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Add-EflowNetwork

Команда Add-EflowNetwork добавляет новую сеть к виртуальной машине EFLOW. У этой команды есть два параметра:

Параметр Допустимые значения Комментарии
vswitchName Имя виртуального коммутатора. Определяет имя виртуального коммутатора, назначенного виртуальной машине EFLOW.
vswitchType Внутренняя или внешняя Определяет тип виртуального коммутатора, назначенного виртуальной машине EFLOW.

Она возвращает объект, который содержит следующие четыре свойства:

  • Имя.
  • ВыделениеMethod
  • Cidr
  • Тип

Чтобы получить дополнительные сведения, используйте команду Get-Help Add-EflowNetwork -full.

Add-EflowVmEndpoint

Команда Add-EflowVmEndpoint добавляет новую конечную точку сети к виртуальной машине EFLOW. Используйте необязательные параметры для задания статического IP-адреса.

Параметр Допустимые значения Комментарии
vswitchName Имя виртуального коммутатора. Определяет имя виртуального коммутатора, назначенного виртуальной машине EFLOW.
vendpointName Имя виртуальной конечной точки Имя виртуальной конечной точки, назначенной виртуальной машине EFLOW.
ip4Address IPv4-адрес в диапазоне, назначенном в качестве области для сервера DCHP Статический IPv4-адрес виртуальной машины EFLOW.
ip4PrefixLength Длина префикса IPv4-адресов для подсети Длина префикса IPv4-адресов для подсети, допустимая только при указании статического IPv4-адреса.
ip4GatewayAddress IPv4-адрес шлюза подсети IPv4-адрес шлюза, допустимый только при указании статического IPv4-адреса.

Она возвращает объект, который содержит следующие четыре свойства:

  • Имя.
  • MacAddress
  • HealthStatus
  • IpConfiguration

Чтобы получить дополнительные сведения, используйте команду Get-Help Add-EflowVmEndpoint -full.

Add-EflowVmSharedFolder

Команда Add-EflowVmSharedFolder позволяет совместно использовать одну или несколько папок ОС узла Windows с виртуальной машиной EFLOW.

Параметр Допустимые значения Комментарии
sharedFoldersJsonPath Строка Путь к файлу конфигурации общих папок JSON.

Файл конфигурации JSON должен иметь следующую структуру:

  • sharedFOlderRoot : путь к корневой папке Windows, содержащей все папки, к которым необходимо предоставить общий доступ с виртуальной машиной EFLOW.
  • hostFolderPath: относительный путь (к родительской корневой папке) папки, к которой будет предоставлен общий доступ к виртуальной машине EFLOW.
  • readOnly: определяет, доступна ли общая папка для записи или только для чтения из виртуальной машины EFLOW — значения: false или true.
  • targetFolderOnGuest : путь к папке внутри виртуальной машины EFLOW, в которой подключена папка ОС узла Windows.
[
   {
      "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 Да или Нет Определяет возможность автоматически принять или отклонить лицензионное соглашение, обходя соответствующую строку приглашения.
acceptOptionalTelemetry Да или Нет Определяет возможность автоматически принять или отклонить необязательные данные телеметрии, обходя соответствующую строку приглашения.
cpuCount Целочисленное значение от 1 до количества ядер ЦП на устройстве Определяет количество ядер ЦП, используемых для виртуальной машины.

Значение по умолчанию: 1 виртуальное ядро.
memoryInMB Целое число даже от 1024 до максимального объема свободной памяти устройства Определяет объем памяти, выделенный для виртуальной машины.

Значение по умолчанию: 1024 МБ.
vmDiskSize От 21 ГБ до 2 ТБ Максимальный размер логического диска динамического расширения виртуального жесткого диска.

Значение по умолчанию: 29 ГБ.

Примечание. Можно использовать vmDiskSize или vmDataSize, но не одновременно.
vmDataSize От 2 ГБ до 2 ТБ Максимальный размер секции данных результирующего жесткого диска в ГБ.

Значение по умолчанию: 10 ГБ.

Примечание. Можно использовать vmDiskSize или vmDataSize, но не одновременно.
vmLogSize Малый или большой Укажите размер секции журнала. Small = 1GB, large = 6GB.

Значение по умолчанию: small.
vswitchName Имя виртуального коммутатора. Определяет имя виртуального коммутатора, назначенного виртуальной машине EFLOW.
vswitchType Внутренняя или внешняя Определяет тип виртуального коммутатора, назначенного виртуальной машине EFLOW.
ip4Address IPv4-адрес в диапазоне, назначенном в качестве области для сервера DCHP Статический IPv4-адрес виртуальной машины EFLOW.
ip4PrefixLength Длина префикса IPv4-адресов для подсети Длина префикса IPv4-адресов для подсети, допустимая только при указании статического IPv4-адреса.
ip4GatewayAddress IPv4-адрес шлюза подсети IPv4-адрес шлюза, допустимый только при указании статического IPv4-адреса.
gpuName Имя устройства GPU Имя устройства GPU, которое будет использоваться для сквозной передачи.
gpuPassthroughType DirectDeviceAssignment, ParaVirtualization или "none" (работа только с ЦП) Тип сквозной передачи GPU
gpuCount Целочисленное значение от 1 до числа ядер GPU на устройстве Число устройств GPU, используемых для виртуальной машины.

Примечание: если используется параметр ParaVirtualization, обязательно установите значение gpuCount = 1.
customSsh нет Определяет, требуется ли пользователю использовать настраиваемую установку OpenSSH.Client. При наличии ssh.exe должен быть доступен для PSM EFLOW
sharedFoldersJsonPath Строка Путь к файлу конфигурации общих папок JSON.

Чтобы получить дополнительные сведения, используйте команду Get-Help Deploy-Eflow -full.

Get-EflowHostConfiguration

Команда Get-EflowHostConfiguration возвращает конфигурацию узла. Эта команда не принимает параметров. Она возвращает объект, который содержит следующие четыре свойства:

  • FreePhysicalMemoryInMB;
  • NumberOfLogicalProcessors;
  • DiskInfo;
  • GpuInfo.

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowHostConfiguration -full.

Get-EflowLogs

Команда Get-EflowLogs собирает и объединяет в пакет журналы процессов развертывания и установки IoT Edge для Linux в Windows. Она возвращает пакет журналов в виде папки .zip.

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowLogs -full.

Get-EflowNetwork

Команда Get-EflowNetwork возвращает список сетей, назначенных виртуальной машине EFLOW. Используйте необязательный параметр для получения определенной сети.

Параметр Допустимые значения Комментарии
vswitchName Имя виртуального коммутатора. Определяет имя виртуального коммутатора, назначенного виртуальной машине EFLOW.

Он возвращает список объектов, содержащих четыре свойства:

  • Имя.
  • ВыделениеMethod
  • Cidr
  • Тип

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowNetwork -full.

Get-EflowVm

Команда Get-EflowVm возвращает текущую конфигурацию виртуальной машины. Эта команда не принимает параметров. Она возвращает объект, который содержит следующие четыре свойства:

  • VmConfiguration;
  • VmPowerState
  • EdgeRuntimeVersion;
  • EdgeRuntimeStatus;
  • SystemStatistics.

Чтобы просмотреть конкретное свойство в формате удобного для чтения списка, выполните команду Get-EflowVM с аргументом ExpandProperty. Например:

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.

Он возвращает список объектов, содержащих четыре свойства:

  • Имя.
  • MacAddress
  • HealthStatus
  • IpConfiguration

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmEndpoint -full.

Get-EflowVmFeature

Команда Get-EflowVmFeature возвращает состояние включения функциональных возможностей IoT Edge для Linux в Windows.

Параметр Допустимые значения Комментарии
функция DpsTpm Имя функции для запроса.

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmFeature -full.

Get-EflowVmName

Команда Get-EflowVmName возвращает текущее имя узла виртуальной машины. Эта команда существует по той причине, что имя узла Windows может меняться со временем.

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmName -full.

Get-EflowVmSharedFolder

Команда Get-EflowVmSharedFolder возвращает сведения об одной или нескольких папках ос узла Windows, к которым предоставлен общий доступ к виртуальной машине EFLOW.

Параметр Допустимые значения Комментарии
sharedfolderRoot Строка Путь к общей корневой папке ОС узла Windows.
hostFolderPath Строка или список Относительный путь и пути (к корневой папке) к общей папке или общей папке ОС Windows.

Он возвращает список объектов, содержащих три свойства:

  • hostFolderPath: относительный путь (к родительской корневой папке) папки, к которой предоставлен общий доступ к виртуальной машине EFLOW.
  • readOnly: определяет, доступна ли общая папка для записи или только для чтения из виртуальной машины EFLOW — значения: false или true.
  • targetFolderOnGuest: путь к папке внутри виртуальной машины EFLOW, в которой подключена папка Windows.

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmSharedFolder -full.

Get-EflowVmTelemetryOption

Команда Get-EflowVmTelemetryOption отображает состояние телеметрии на виртуальной машине — Optional (Необязательно) или Required (Требуется).

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmTelemetryOption -full.

Get-EflowVmTpmProvisioningInfo

Команда Get-EflowVmTpmProvisioningInfo возвращает сведения о подготовке доверенного платформенного модуля. Эта команда не принимает параметров. Она возвращает объект, который содержит следующие два свойства:

  • Ключ подтверждения
  • Идентификатор регистрации

Чтобы получить дополнительные сведения, используйте команду Get-Help Get-EflowVmTpmProvisioningInfo -full.

Invoke-EflowVmCommand

Команда Invoke-EflowVmCommand выполняет на виртуальной машине команду Linux и возвращает ее выходные данные. Эта команда работает только с командами Linux, которые возвращают конечные выходные данные. Ее нельзя использовать для команд Linux, которые требуют взаимодействия с пользователем или выполняются неограниченно долго.

Вы можете заранее настроить команду для выполнения с помощью следующих необязательных параметров.

Параметр Допустимые значения Комментарии
Команда Строка Команда, которая будет выполнена на виртуальной машине.
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 Имя узла для существующего центра Интернета вещей Имя узла центра Интернета вещей Azure для подготовки устройства 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-адрес конечной точки устройства URL-адрес глобальной конечной точки, используемой для подготовки DPS.

Чтобы получить дополнительные сведения, используйте команду Get-Help Provision-EflowVm -full.

Remove-EflowNetwork

Команда Remove-EflowNetwork удаляет существующую сеть, подключенную к виртуальной машине EFLOW. Эта команда принимает один параметр.

Параметр Допустимые значения Комментарии
vswitchName Имя виртуального коммутатора. Определяет имя виртуального коммутатора, назначенного виртуальной машине EFLOW.

Чтобы получить дополнительные сведения, используйте команду Get-Help Remove-EflowNetwork -full.

Remove-EflowVmEndpoint

Команда Remove-EflowVmEndpoint удаляет существующую конечную точку сети, подключенную к виртуальной машине EFLOW. Эта команда принимает один параметр.

Параметр Допустимые значения Комментарии
vendpointName Имя виртуальной конечной точки Имя виртуальной конечной точки, назначенной виртуальной машине EFLOW.

Чтобы получить дополнительные сведения, используйте команду Get-Help Remove-EflowVmEndpoint -full.

Remove-EflowVmSharedFolder

Команда Remove-EflowVmSharedFolder перестает предоставлять общий доступ к папке операционной системы Windows виртуальной машине EFLOW. У этой команды есть два параметра:

Параметр Допустимые значения Комментарии
sharedfolderRoot Строка Путь к общей корневой папке ОС узла Windows.
hostFolderPath Строка или список Относительный путь и пути (к корневой папке) к общей папке или общей папке ОС Windows.

Чтобы получить дополнительные сведения, используйте команду Get-Help Remove-EflowVmSharedFolder -full.

Set-EflowVM

Команда Set-EflowVM обновляет конфигурацию виртуальной машины, сохраняя в нее указанные в запросе свойства. Необязательные параметры позволяют определить нужную конфигурацию для виртуальной машины.

Параметр Допустимые значения Комментарии
cpuCount Целочисленное значение от 1 до количества ядер ЦП на устройстве Определяет количество ядер ЦП, используемых для виртуальной машины.
memoryInMB Целочисленное значение от 1024 до максимального объема свободной памяти на устройстве Определяет объем памяти, выделенный для виртуальной машины.
gpuName Имя устройства GPU Имя устройства GPU, которое будет использоваться для сквозной передачи.
gpuPassthroughType DirectDeviceAssignment, ParaVirtualization или "none" (без сквозной передачи) Тип сквозной передачи GPU
gpuCount Целочисленное значение от 1 до количества ядер GPU на устройстве Число устройств GPU для виртуальной машины. Примечание: допустимо только при использовании DirectDeviceAssignment
headless нет Если этот флаг присутствует, он определяет требование подтверждения пользователя при любом предупреждении системы безопасности.

Чтобы получить дополнительные сведения, используйте команду Get-Help Set-EflowVM -full.

Set-EflowVmDNSServers

Команда Set-EflowVmDNSServers настраивает DNS-серверы для виртуальной машины EFLOW.

Параметр Допустимые значения Комментарии
vendpointName Строковое значение имени виртуальной конечной точки Используйте Get-EflowVmEndpoint, чтобы получить виртуальные интерфейсы, назначенные виртуальной машине EFLOW. Например, DESKTOP-CONTOSO-EflowInterface
dnsServers Список IP-адресов DNS-сервера, используемых для разрешения имен Например, @("10.0.10.1")

Чтобы получить дополнительные сведения, используйте команду Get-Help Set-EflowVmDNSServers -full.

Set-EflowVmFeature

Команда Set-EflowVmFeature включает или отключает состояние функциональных возможностей IoT Edge для Linux в Windows.

Параметр Допустимые значения Комментарии
функция DpsTpm, Defender Имя функции для переключения.
включить нет Если этот флаг присутствует, команда включает указанную возможность.

Чтобы получить дополнительные сведения, используйте команду 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 предоставляется как функция для проверки того, успешно ли создана виртуальная машина IoT Edge для Linux в Windows. Он принимает только общие параметры, и возвращает значение True , если виртуальная машина была создана и false , если нет.

Чтобы получить дополнительные сведения, используйте команду Get-Help Verify-EflowVm -full.

Следующие шаги

Из следующей статьи вы узнаете, как использовать описанные выше команды для установки и подготовки к работе IoT Edge для Linux в Windows: