Se connecter à l’aide de TShell
TShell est un module PowerShell inclus dans le Kit système Windows que vous pouvez utiliser pour vous connecter, exécuter des tests et déboguer vos machines virtuelles et appareils de test.
Pour vous connecter à l’aide de TShell, vous avez besoin des éléments suivants :
- Un PC de technicien avec le Kit système Windows connecté à un réseau
- Un appareil de système d’exploitation d’usine qui :
- Est disponible sur le réseau à partir du PC de technicien. Pour plus d’informations sur la façon d’obtenir l’adresse IP de votre appareil, consultez Rechercher l’adresse IP de votre appareil.
- Inclut TShell. TShell est inclus dans la
WCOS_TEST_COMPONENTS
fonctionnalité, qui fait partie du manifeste de la fonctionnalitéWindowsCoreNonProduction.xml. Cette fonctionnalité est incluse dans les images de développement par défaut.
Pour vous connecter
Sur le PC de technicien, montez l’ISO WSK et démarrez l’environnement de build WSK (par exemple,
E:\SetImagGenEnv.cmd
) en tant qu’administrateur.Ouvrez TShell :
E:\tshell.cmd
Se connecter à l’appareil
open-device 192.168.1.2
Où 192.168.1.2 est l’adresse IP de l’appareil auquel vous vous connectez.
Applets de commande TShell
Les commandes de cette section sont utilisées pour interagir avec l’appareil distant. Ils fonctionnent uniquement lorsque vous êtes connecté à TShell.
Exécutez chaque commande avec -?
pour obtenir l’utilisation de base, puis exécutez help <command> -detailed
pour obtenir l’utilisation détaillée.
Toutes les *-Device
applets de commande ont un alias pour leur verbe (le mot avant « - ») et la lettre « d ». Exemples :
Nom de l'applet de commande | Alias d’applet de commande |
---|---|
Put-Device | putd |
Exec-Device | execd |
Dir-Device | dird |
Applets de commande disponibles
Applets de commande de connexion d’appareil
Applet de commande | Description |
---|---|
open-device | Connecte tshell à l’appareil cible |
close-device | Se déconnecter de l’appareil cible connecté |
Applets de commande d’exécution d’appareil
Applet de commande | Description |
---|---|
cmd-device(cmdd) | Exécuter des commandes cmd.exe |
exec-device(execd) | Exécuter des exécutables |
Applets de commande d’interaction d’appareil
Applet de commande | Description |
---|---|
deploy-device(deployd) | Déployer des packages de test sur l’appareil connecté |
dir-device(dird) | Répertoire de liste |
cd-device(cdd) | Modifier le répertoire de l’appareil |
rmdir-device(rdd, rmdird) | Supprimer un répertoire |
copy-device(cpd, copyd) | Copie des fichiers |
del-device(deld) | Supprimer le fichier |
mkdir-device(mdd, mkdird) | Créer un répertoire |
move-device(mvd, move) | Déplacer des fichiers |
put-device(putd) | Copier des fichiers d’un appareil local vers un appareil distant |
get-device(getd) | copier des fichiers d’un appareil distant vers un appareil local |
tlist-device(tlistd) | Affiche des informations pour chaque tâche en cours d’exécution |
type-device(typd) | Imprime le contenu d’un fichier sur l’appareil sur le terminal |
kill-device(killd) | |
reg-device(regd) | Utilisé pour tout ce qui est lié aux clés de Registre |
Obtenir des informations sur l’appareil et l’environnement TShell
Applet de commande | Description |
---|---|
get-variable device | Afficher l’adresse de l’appareil, le nom et le répertoire de travail. |
get-variable TShell | Afficher la version de TShell installée sur l’appareil |
Applets de commande pour le débogage
Applet de commande | Description |
---|---|
debug-device(debugd) | Processus de débogage |
Applets de commande de connexion d’appareil
open-device : connexion de tshell à l’appareil cible
Pour ouvrir une connexion, spécifiez l’adresse IP localhost (par défaut : 127.0.0.1) ou si kdnet est activé, utilisez l’adresse MAC.
PS> open-device 127.0.0.1
close-device : se déconnecter de l’appareil cible connecté
Lorsque vous avez terminé de travailler sur un appareil, fermez la connexion :
PS> close-device
Applets de commande d’exécution d’appareil
cmd-device(cmdd) : exécuter des commandes cmd.exe
TShell expose les commandes en cours d’exécution via cmd.exe sur l’appareil et renvoie le code standard, l’erreur standard et le code de sortie vers le pipeline PowerShell via la commande cmd-device (cmdd).
PS C:\> cmd-device dir %DataDrive%\test
PS C:\> cmd-device copy %DataDrive%\test\foo %DataDrive%\test\bar
PS C:\> cmd-device del %DataDrive%\test\foo
Il expose également certaines commandes de cmd.exe courantes via des applets de commande dédiées, pour lesquelles il supprime les invites (par exemple, /y
pour « copy ») et retourne la sortie de la commande sous forme de chaîne (Remarque : ces commandes sont destinées à des raisons pratiques lorsque vous travaillez à partir de l’invite. Lors de l’écriture de scripts PowerShell, l’applet de commande cmd-device doit être utilisée à la place).
exec-device(execd):exécuter des exécutables
Pour exécuter une commande sur l’appareil, utilisez la commande exec-device (execd). Toute la ligne de commande après l’exécution des commutateurs en l’état sur l’appareil. Tous les arguments du processus qui commencent par « - » doivent être passés entre guillemets (simples ou doubles) afin que PowerShell n’essaie pas de les analyser. TShell attend que le processus se termine et génère le code de sortie dans la console.
PS C:\> execd windows\system32\cmd.exe
PS C:\> execd tux.exe '-d tuxdemo.dll'
Pour passer des arguments uniques entre guillemets doubles au processus côté appareil, vous devez placer tous les arguments de processus entre guillemets uniques (qui est une chaîne littérale dans PowerShell) lors de leur passage à TShell.
PS C:\> execd tux.exe '-d tuxdemo.dll -c "arg1 arg2" -f results.log'
Par défaut, la sortie du processus n’est pas envoyée à l’interpréteur de commandes. Vous pouvez utiliser le commutateur -output pour diriger à la fois l’erreur standard et l’erreur standard vers l’hôte. Les deux sont retournés en tant que propriétés de la valeur de retour de la commande.
PS C:\> execd -output tux.exe '-d tuxdemo.dll'
Par défaut, la commande est exécutée de manière synchrone, ce qui signifie que TShell attend que le processus se termine avant de revenir à l’invite. Vous pouvez utiliser le commutateur -async pour exécuter le processus de manière asynchrone, auquel cas TShell démarre simplement le processus et retourne immédiatement.
PS C:\> execd -async tux '-d tuxdemo.dll -f results.log'
Applets de commande d’interaction d’appareil
deploy-device(deployd) : déployer des packages de test sur l’appareil connecté
Pour déployer un package sur l’appareil, utilisez la commande deploy-device (deployd).
syntaxe Deploy-Device
Deploy-Device -Packages <string[]> [-PackageRootPaths <string>] [-AlternatePackageRoots <string[]>]
[-TestToolsPath <string>] [-DeployPackageMacroOverride <string>] [-PackageCache <string>] [-Timeout <int>]
[-OnDevice] [-TestArchitecture <string>] [<CommonParameters>]
Exemple :
PS C:\> Deploy-Device -Packages Microsoft.OneCore.ATest.spkg
-packageRootPath \\server\folder
-alternatePackageRoots c:\packages\sd.binaries.x86fre\prebuilt
Pour en savoir plus, exécutez get-help Deploy-Device -detailed
.
Pour déployer des packages de test WOW, ajoutez l’option -testarch. Exemple :
PS c:> Deploy-Device -Packages Microsoft-Windows-Test-TAEF -testarch wow64
Les entrées TestArch prises en charge sont les suivantes : amd64, x86, arm, arm64, wow64, arm64.arm, arm64.x86. Seuls les packages natifs seront déployés si aucun testArch n’est spécifié.
dir-device(dird):list directory
Vous pouvez répertorier les répertoires sur un appareil distant :
dird
cd-device(cdd) : modifier le répertoire de l’appareil
TShell case activée si le nouveau répertoire existe sur l’appareil et l’erreur s’il ne le fait pas. La notation point-point est prise en charge pour le déplacement vers le répertoire parent, et la $DeviceWD
variable est mise à jour à chaque fois.
DEVICE C:\
PS C:\> cdd test
DEVICE C:\test
PS C:\> cdd ..\windows
DEVICE C:\windows
PS C:\> cdd \
DEVICE C:\
PS C:\>
rmdir-device(rdd, rmdird):remove directory
Vous pouvez supprimer un dossier d’un appareil distant :
rmdird c:\foldertoremove
copy-device(cpd, copyd):copy files
Copiez des fichiers entre des répertoires sur le système distant. (Cela ne copie pas les fichiers entre l’hôte et le système distant. Voir getd et putd pour cela.)
fichier del-device(deld):d elete
Vous pouvez supprimer des fichiers d’un appareil distant :
deld file.bat
mkdir-device(mdd, mkdird): créer un répertoire
Vous pouvez créer un répertoire sur un appareil distant :
mkdird c:\newfolder
move-device(mvd, move):déplacer des fichiers
Vous pouvez déplacer des dossiers d’un emplacement sur un appareil distant vers un autre :
moved c:\source\file.txt c:\destination\file.txt
put-device(putd):copier les fichiers vers
Pour copier des fichiers sur l’appareil distant, utilisez le put-device (putd).
Lors de la copie d’un fichier sur l’appareil, vous pouvez spécifier le chemin d’accès du nouveau fichier d’appareil ou le répertoire dans lequel il doit être copié.
PS C:\> putd C:\hostdir\hostfile.txt C:\devicedir\devicefile.txt
PS C:\> putd C:\hostdir\hostfile.txt C:\devicedir
Les caractères génériques sont pris en charge uniquement pour le chemin d’accès de l’hôte source, et les chemins d’accès de l’hôte et de l’appareil sont relatifs aux répertoires de travail actuels.
PS C:\> putd C:\hostdir\* C:\devicedir
PS C:\> putd C:\hostdir\hostfile.txt .
La copie récursive des répertoires est prise en charge.
PS C:\> putd -r C:\hostdir\* C:\devicedir
get-device(getd) : copiez les fichiers à partir de
Pour copier des fichiers à partir de l’appareil, utilisez les commandes get-device (getd).
Lors de la copie d’un fichier vers ou à partir de l’appareil, vous pouvez spécifier le chemin d’accès du nouveau fichier d’appareil ou le répertoire dans lequel il doit être copié.
PS C:\> getd C:\devicedir\devicefile.txt C:\hostdir\hostfile.txt
PS C:\> getd C:\devicedir\devicefile.txt C:\hostdir
Les caractères génériques sont pris en charge uniquement pour le chemin d’accès de l’hôte source, et les chemins d’accès de l’hôte et de l’appareil sont relatifs aux répertoires de travail actuels.
PS C:\> getd C:\devicedir\devicefile.txt .
La copie récursive des répertoires est prise en charge.
PS C:\> getd -r C:\devicedir\ .
kill-device(killd)
reg-device(regd)
Utilisé pour tout ce qui concerne les clés de Registre.
regd query "insert setting here"
est utilisé pour interroger les clés de Registre sur l’appareil et regd add "insert setting here"
est utilisé pour ajouter/modifier les paramètres du Registre.
tlist-device(tlistd)
Affichez la commande, la ligne de commande, le répertoire de travail, l’utilisation de la mémoire et les DLL pour chaque tâche en cours d’exécution.
type-device(typd)
Imprime le contenu d’un fichier sur l’appareil sur le terminal (semblable à l’alias powershell de bureau « cat »)
Obtenir des informations sur l’appareil et l’environnement TShell
get-variable device*
Afficher l’adresse de l’appareil, le nom et le répertoire de travail.
PS C:\> Get-Variable device*
Name Value
---- -----
DeviceAddress 10.225.96.216
DeviceName 10.225.96.216
Dget-variable devices*
get-variable TShell*
Affichez la version de TShell installée sur l’appareil.
PS C:\> Get-Variable TShell*
Name Value
---- -----
TShellInstallPath C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\TShell\TShell
TShellVersion 8.1.1801.9001
Applets de commande pour le débogage
debug-device(debugd):d ébug process
Pour que cette commande fonctionne, vous devez installer la dernière version du débogueur.
Pour attacher un client de débogueur (windbg est la valeur par défaut) à un processus en mode utilisateur, utilisez la commande debug-device (déboguer). Un nouveau processus peut être démarré avec le débogueur attaché en spécifiant le chemin d’accès de l’exe (peut être relatif au répertoire de travail actuel de l’appareil).
PS C:\> debugd M:\windows\system32\cmd.exe
Vous pouvez également l’attacher à un processus existant en spécifiant le PID, qui peut être obtenu à l’aide de la commande tlist-device.
PS C:\> tlistd
...
1234 myproc.exe
PS C:\> debugd -pid 1234
Si ni l’un ni l’autre n’est spécifié, le client de débogueur est démarré avec une connexion à l’appareil, mais aucun processus n’est attaché.
PS C:\> debugd
Vous pouvez également spécifier le chemin du client de débogueur à utiliser avec le commutateur -dbg
PS C:\> debugd -dbg C:\debuggers\ntsd.exe -pid 1234
Débogage d’un processus d’application moderne
Pour déboguer un processus d’application moderne au lancement, joignez-vous au service DcomLaunch et activez le débogage de processus enfant :
Dans TShell :
PS C:\> debugd -servicename dcomlaunch
Ensuite, dans le débogueur :
.childdbg 1