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
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.
Sie finden dieselben Informationen auf der Windows 10 IoT Core-Dashboard.
Ö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.
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.
Nun sollte die PowerShell-Konsole angezeigt werden.
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
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>
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.
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
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.
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
undEnter-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.
Verwenden Sie das Hilfsprogramm, um den
setcomputername
Computernamen zu ändern:setcomputername <new-name>
Starten Sie das Gerät neu, damit die Änderung wirksam wird. Sie können den
shutdown
Befehl wie folgt verwenden:shutdown /r /t 0
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.