Verwenden von PowerShell für Windows IoT

Hinweis

Fügen Sie die Open Source PowerShell-Version mithilfe von Import-PSCoreRelease (importps) hinzu. Sie benötigen weiterhin das IOT_POWERSHELL-Feature, um WinRM-Binärdateien einzuschließen.

Konfigurieren und verwalten Sie alle Windows 10 IoT Core Geräte mithilfe von Windows PowerShell remote. PowerShell ist eine aufgabenbasierte Befehlszeilenshell und Skriptsprache, die speziell für die Systemverwaltung entwickelt wurde.

Führen Sie diese Schritte aus, um Ihr Gerät, auf dem Windows 10 IoT Core ausgeführt wird, ordnungsgemäß zu konfigurieren, damit es gut mit Visual Studio 2017 funktioniert.

Initiieren einer PowerShell-Sitzung

  1. Um eine PowerShell-Sitzung mit Ihrem Windows 10 IoT Core Gerät zu starten, müssen Sie zunächst eine Vertrauensstellung zwischen Ihrem Host-PC und Ihrem Gerät erstellen. Nachdem Sie Ihr Windows IoT Core-Gerät gestartet haben, wird eine IP-Adresse auf dem Bildschirm angezeigt, der an das Gerät angefügt ist.

    DefaultApp auf Windows 10 IoT Core

    Sie finden dieselben Informationen auf der Windows 10 IoT Core-Dashboard.

  2. Öffnen Sie eine PowerShell-Administratorkonsole auf Ihrem lokalen PC. Geben Sie powershell in das Feld Web und Windows durchsuchen in der Nähe des Windows-Startmenüs ein. Windows findet PowerShell auf Ihrem PC.

    Suchen nach PowerShell

  3. Um PowerShell als Administrator zu starten, klicken Sie mit der rechten Maustaste auf Windows PowerShell, und wählen Sie dann Als Administrator ausführen aus.

    Ausführen von PowerShell als Administrator

    Nun sollte die PowerShell-Konsole angezeigt werden.

    PS-Konsole

  4. Möglicherweise müssen Sie den WinRM-Dienst auf Ihrem Desktop starten, um Remoteverbindungen zu aktivieren. Geben Sie dazu in der PowerShell-Konsole den folgenden Befehl ein:

        net start WinRM
    
  5. Geben Sie in der PowerShell-Konsole Folgendes ein, und ersetzen Sie <machine-name or IP address> durch den entsprechenden Wert (die Verwendung Ihres Computernamens ist am einfachsten, aber wenn Ihr Gerät in Ihrem Netzwerk nicht eindeutig benannt ist, versuchen Sie die IP-Adresse):

          Set-Item WSMan:\localhost\Client\TrustedHosts -Value <machine-name or IP Address>
    
  6. Geben Sie ein Y , um die Änderung zu bestätigen.

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

    Hinweis

    Wenn Sie mehrere Geräte verbinden möchten, können Sie Kommas und Anführungszeichen verwenden, um jedes Gerät zu trennen.

  7. Jetzt können Sie eine Sitzung mit Ihrem Windows IoT Core-Gerät starten. Geben Sie in Ihrer PowerShell-Administratorkonsole Folgendes ein:

         Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    
  8. Geben Sie im Dialogfeld Anmeldeinformationen das folgende Standardkennwort ein: p@ssw0rd

Hinweis

Der Verbindungsvorgang erfolgt nicht sofort und kann bis zu 30 Sekunden dauern.

Wenn Sie erfolgreich eine Verbindung mit dem Gerät hergestellt haben, sollte die IP-Adresse Ihres Geräts vor der Eingabeaufforderung angezeigt werden.

PowerShell-Konsole

  1. Aktualisieren Sie ihr Kontokennwort. Es wird dringend empfohlen , das Standardkennwort für das Administratorkonto zu aktualisieren. Führen Sie hierzu die folgenden Befehle in Ihrer PowerShell-Verbindung aus:

    a. Ersetzen Sie durch [new password] ein sicheres Kennwort:

    net user Administrator [new password]
    

    b. Richten Sie als Nächstes eine neue PowerShell-Sitzung mit Exit-PSSession und Enter-PSSession mit den neuen Anmeldeinformationen ein.

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

Häufig verwendete PowerShell-Befehle

Problembehandlung mit Visual Studio Remote Debugger

Um Anwendungen aus Visual Studio 2017 bereitstellen zu können, müssen Sie sicherstellen, dass die Visual Studio Remote Debugger auf Ihrem Windows IoT Core-Gerät ausgeführt wird. Der Remotedebugger sollte beim Starten des Computers automatisch geöffnet werden. Um die Überprüfung zu überprüfen, verwenden Sie den tlist Befehl, um alle ausgeführten Prozesse aus PowerShell aufzulisten. Es sollten zwei Instanzen von msvsmon.exe auf dem Gerät ausgeführt werden.

Es ist möglich, dass die Visual Studio Remote Debugger nach langen Inaktivitätsperioden ein Timeout hat. Wenn Visual Studio keine Verbindung mit Ihrem Windows IoT Core-Gerät herstellen kann, versuchen Sie, das Gerät neu zu starten.

Konfigurieren Ihres Windows IoT Core-Geräts

Wenn Sie möchten, können Sie Ihr Gerät umbenennen.

  1. Verwenden Sie das Hilfsprogramm, um den setcomputername Computernamen zu ändern:

    setcomputername <new-name>
    
  2. Starten Sie das Gerät neu, damit die Änderung wirksam wird. Sie können den shutdown Befehl wie folgt verwenden:

    shutdown /r /t 0
    
  3. Da der Computername geändert wurde, müssen Sie nach dem Neustart diesen Befehl erneut ausführen, um eine Verbindung mit Ihrem Gerät unter dem neuen Namen herzustellen:

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

Ihr Windows IoT Core-Gerät sollte jetzt ordnungsgemäß konfiguriert und einsatzbereit sein!

Häufig verwendete Hilfsprogramme

Eine Liste der Befehle und Hilfsprogramme, die Sie mit PowerShell verwenden können, finden Sie auf der Seite Befehlszeilenverwendungen .

Bekannte Probleme und Umgehungen

PROBLEM: Ein bekannter Fehler in PowerShell-Sicherheitsrichtlinien führt dazu, dass die folgenden Probleme innerhalb der Remotesitzung auftreten:

  • Get-Help gibt unerwartete Übereinstimmungen zurück.
  • Get-Command für ein angegebenes Modul gibt eine leere Befehlsliste zurück.
  • Das Ausführen eines Cmdlets aus einem dieser Module löst CommandNotFoundException aus: Appx, NetAdapter, NetSecurity, NetTCPIP, PnpDevice.
  • Import-Module für eines der oben genannten Module löst psSecurityException-Ausnahme mit UnauthorizedAccess aus. Das automatische Laden des Moduls scheint auch nicht zu funktionieren.

Problemumgehung: Ändern Sie die Ausführungsrichtlinie innerhalb der PowerShell-Remotesitzung in RemoteSigned. Weitere Informationen zu den verschiedenen Ausführungsrichtlinien finden Sie unter Verwenden des cmdlets Set-ExecutionPolicy.

PROBLEM: Cmdlets aus einigen Modulen wie NetAdapter sind manchmal nicht sichtbar. Beispielsweise gibt Get-Module NetAdapter eine leere Liste zurück.

Problemumgehung: Verwenden Sie den Parameter -Force mit Import-Module. Beispiel: Import-Module NetAdapter -Force.

PROBLEM: Das Festlegen der Ausführungsrichtlinie auf "AllSigned" unterbricht PowerShell-Remoting. Nachfolgende Versuche, eine Remotesitzung zu erstellen, schlagen mit einer SecurityException fehl, die Typesv3.ps1xml lädt.

Problemumgehung: Verwenden Sie winrs.exe, um die Ausführungsrichtlinie von PowerShell wiederherzustellen:

  • Ändern der Konsolencodeseite Chcp 65001
  • Anmelden bei einer Remoteshell cmd.exe Winrs.exe -r:<target> -u:<username> -p:<password> cmd.exe
  • Ändern Sie in remote cmd.exe den entsprechenden Registrierungsschlüssel. reg add HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /d RemoteSigned /f
  • Beenden der Remotesitzung cmd.exe exit

Andere bekannte Probleme

  • In PowerShell-Skripts funktionieren Attribute der PowerShell-Klasse oder -Enumeration nicht. Das Hinzufügen von attributierten Ergebnissen in der folgenden Ausnahme: Type muss ein Runtime-Type-Objekt sein.

  • Ausgehendes CIM- und PowerShell-Remoting werden nicht unterstützt. Relevante Funktionen in vertrauenden Cmdlets funktionieren nicht. Dazu gehören Enter-PSSession, Get-Job, Receive-Job, Import-Module, Invoke-Command und Copy-Item.

  • SecureString-Befehle ConvertFrom-SecureString und ConvertTo-SecureString funktionieren nur, wenn die Sitzung mithilfe der CredSSP-Authentifizierung erstellt wird. Andernfalls muss der -Key-Parameter angegeben werden. Ausführliche Informationen zum Konfigurieren der CredSSP-Authentifizierung finden Sie unter Aktivieren der PowerShell-Funktionalität "Second-Hop" mit CredSSP.