Utilisation de PowerShell pour Windows IoT

Notes

Ajoutez la version powershell open source à l’aide de Import-PSCoreRelease (importps). Vous aurez toujours besoin IOT_POWERSHELL fonctionnalité pour inclure les fichiers binaires WinRM

Configurez et gérez à distance n’importe quel appareil Windows 10 IoT Standard à l’aide de Windows PowerShell. PowerShell est un interpréteur de commandes basé sur les tâches et un langage de script, spécialement conçu pour l’administration système.

Veillez à suivre ces étapes pour configurer correctement votre appareil exécutant Windows 10 IoT Standard pour qu’il fonctionne correctement avec Visual Studio 2017.

Lancement d’une session PowerShell

  1. Pour démarrer une session PowerShell avec votre appareil Windows 10 IoT Standard, vous devez d’abord créer une relation d’approbation entre votre PC hôte et votre appareil. Après avoir démarré votre appareil Windows IoT Core, une adresse IP s’affiche sur l’écran attaché à l’appareil.

    DefaultApp sur Windows 10 IoT Standard

    Vous trouverez les mêmes informations sur le Tableau de bord Windows 10 IoT Standard.

  2. Ouvrez une console PowerShell administrateur sur votre PC local. Tapez powershell dans la zone Rechercher sur le web et Windows près du menu Démarrer de Windows. Windows trouvera PowerShell sur votre PC.

    Rechercher PowerShell

  3. Pour démarrer PowerShell en tant qu’administrateur, cliquez avec le bouton droit sur Windows PowerShell, puis sélectionnez Exécuter en tant qu’administrateur.

    Exécuter PowerShell en tant qu’administrateur

    Vous devez maintenant voir la console PowerShell.

    Console PS

  4. Vous devrez peut-être démarrer le service WinRM sur votre bureau pour activer les connexions à distance. Pour ce faire, à partir de la console PowerShell, tapez la commande suivante :

        net start WinRM
    
  5. À partir de la console PowerShell, tapez ce qui suit, en <machine-name or IP address> remplaçant par la valeur appropriée (l’utilisation du nom de votre machine est la plus simple, mais si votre appareil n’est pas nommé de manière unique sur votre réseau, essayez l’adresse IP) :

          Set-Item WSMan:\localhost\Client\TrustedHosts -Value <machine-name or IP Address>
    
  6. Entrez Y pour confirmer la modification.

        Set-Item WSMan:\localhost\Client\TrustedHosts -Value "<machine1-name or IP Address>,<machine2-name or IP Address>"
    

    Notes

    Si vous souhaitez connecter plusieurs appareils, vous pouvez utiliser des virgules et des guillemets pour séparer chaque appareil.

  7. Vous pouvez maintenant démarrer une session avec votre appareil Windows IoT Core. À partir de la console PowerShell de votre administrateur, tapez :

         Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    
  8. Dans la boîte de dialogue d’informations d’identification, entrez le mot de passe par défaut suivant : p@ssw0rd

Notes

Le processus de connexion n’est pas immédiat et peut prendre jusqu’à 30 secondes.

Si vous vous êtes correctement connecté à l’appareil, vous devez voir l’adresse IP de votre appareil avant l’invite.

Console PowerShell

  1. Mettez à jour le mot de passe de votre compte. Nous vous recommandons vivement de mettre à jour le mot de passe par défaut du compte Administrateur. Pour ce faire, exécutez les commandes suivantes dans votre connexion PowerShell :

    a. Remplacez par [new password] un mot de passe fort :

    net user Administrator [new password]
    

    b. Ensuite, établissez une nouvelle session PowerShell à l’aide Exit-PSSession de et Enter-PSSession avec les nouvelles informations d’identification.

    Exit-PSSession
    
    Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    

Commandes PowerShell couramment utilisées

Résolution des problèmes avec Débogueur distant Visual Studio

Pour pouvoir déployer des applications à partir de Visual Studio 2017, vous devez vous assurer que le Débogueur distant Visual Studio s’exécute sur votre appareil Windows IoT Core. Le débogueur distant doit s’ouvrir automatiquement lorsque vous démarrez votre ordinateur. Pour doubler case activée, utilisez la tlist commande pour répertorier tous les processus en cours d’exécution à partir de PowerShell. Il doit y avoir deux instances de msvsmon.exe en cours d’exécution sur l’appareil.

Il est possible pour le Débogueur distant Visual Studio d’expirer après de longues périodes d’inactivité. Si Visual Studio ne peut pas se connecter à votre appareil Windows IoT Core, essayez de redémarrer l’appareil.

Configurer votre appareil Windows IoT Core

Si vous le souhaitez, vous pouvez renommer votre appareil.

  1. Pour modifier le nom de l’ordinateur, utilisez l’utilitaire setcomputername :

    setcomputername <new-name>
    
  2. Redémarrez l’appareil pour que la modification prenne effet. Vous pouvez utiliser la shutdown commande comme suit :

    shutdown /r /t 0
    
  3. Étant donné que le nom de l’ordinateur a été modifié, après le redémarrage, vous devez réexécuter cette commande pour vous connecter à votre appareil à l’aide du nouveau nom :

        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <new-name>

Votre appareil Windows IoT Core doit maintenant être correctement configuré et prêt à être utilisé !

Utilitaires couramment utilisés

Pour obtenir la liste des commandes et utilitaires que vous pouvez utiliser avec PowerShell, consultez la page Utils de ligne de commande .

Problèmes connus et solutions de contournement

PROBLÈME : Un bogue connu dans les stratégies de sécurité PowerShell entraîne le manifeste des problèmes suivants dans la session distante :

  • Get-Help retourne des correspondances inattendues.
  • Get-Command sur un module spécifié retourne une liste de commandes vide.
  • L’exécution d’une applet de commande à partir de l’un de ces modules lève CommandNotFoundException : Appx, NetAdapter, NetSecurity, NetTCPIP, PnpDevice.
  • Import-Module sur l’un des modules ci-dessus lève l’exception PSSecurityException avec UnauthorizedAccess. Le chargement automatique du module ne semble pas fonctionner non plus.

Solution de contournement : modifiez la stratégie d’exécution dans la session PowerShell distante en RemoteSigned. Pour plus d’informations sur les différentes stratégies d’exécution, consultez Utilisation de l’applet de commande Set-ExecutionPolicy.

PROBLÈME : Les applets de commande de certains modules tels que NetAdapter ne sont parfois pas visibles. Par exemple, Get-Module NetAdapter retourne une liste vide.

Solution de contournement : utilisez le paramètre -Force avec Import-Module. Par exemple : Import-Module NetAdapter -Force.

PROBLÈME : La définition de la stratégie d’exécution sur « AllSigned » interrompt la communication à distance PowerShell. Les tentatives suivantes de création d’une session à distance échouent avec une instance SecurityException qui charge Typesv3.ps1xml.

Solution de contournement : utilisez winrs.exe pour restaurer la stratégie d’exécution de PowerShell :

  • Page Modifier le code de la console Chcp 65001
  • Connectez-vous à un interpréteur de commandes de cmd.exe distant Winrs.exe -r:<target> -u:<username> -p:<password> cmd.exe
  • Dans le cmd.exe distant, modifiez la clé de Registre appropriée reg add HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /d RemoteSigned /f
  • Quitter la session de cmd.exe distante exit

Autres problèmes connus

  • Dans les scripts PowerShell, les attributs de la classe ou de l’énumération PowerShell ne fonctionnent pas. L’ajout de résultats attributs dans l’exception suivante levée : Type doit être un objet Type runtime.

  • Le CIM sortant et la communication à distance PowerShell ne sont pas pris en charge. Les fonctionnalités pertinentes dans les applets de commande de confiance ne fonctionnent pas. Il s’agit notamment de Enter-PSSession, Get-Job, Receive-Job, Import-Module, Invoke-Command et Copy-Item.

  • Les commandes SecureString ConvertFrom-SecureString et ConvertTo-SecureString ne fonctionnent que si la session est créée à l’aide de l’authentification CredSSP. Sinon, le paramètre -Key doit être spécifié. Pour plus d’informations sur la configuration de l’authentification CredSSP, consultez Activer la fonctionnalité PowerShell « Second tronçon » avec CredSSP.