Compartir a través de


Conexión mediante TShell

TShell es un módulo de PowerShell incluido con el Kit de sistema de Windows que puede usar para conectarse, ejecutar pruebas y depurar los dispositivos de prueba y las máquinas virtuales.

Para conectarse mediante TShell, necesitará lo siguiente:

  • Un equipo técnico con el Kit de sistema de Windows que está conectado a una red
  • Un dispositivo de sistema operativo de fábrica que:

Topología WDP que muestra que puede conectarse a través de tshell desde un equipo remoto

Para conectarse

  1. En el equipo técnico, monte la ISO de WSK e inicie el entorno de compilación de WSK (por ejemplo, E:\SetImagGenEnv.cmd) como administrador.

  2. Abra TShell:

    E:\tshell.cmd
    
  3. Conexión al dispositivo

    open-device 192.168.1.2
    

    Donde 192.168.1.2 es la dirección IP del dispositivo al que se conecta.

Cmdlets de TShell

Los comandos de esta sección se usan para interactuar con el dispositivo remoto. Solo funcionarán mientras esté conectado a TShell.

Ejecute cada comando con -? para obtener el uso básico y ejecute help <command> -detailed para obtener el uso detallado.

Todos los *-Device cmdlets tienen el alias de su verbo (la palabra anterior a "-") y la letra "d". Ejemplos:

Nombre del cmdlet Cmdlet Alias
Put-Device putd
Exec-Device execd
Dir-Device dird

Cmdlets disponibles

Cmdlets de conexión de dispositivos

cmdlet Descripción
open-device Conecta tshell al dispositivo de destino
close-device Desconexión del dispositivo de destino conectado

Cmdlets de ejecución de dispositivos

cmdlet Descripción
cmd-device(cmdd) Ejecutar comandos de cmd.exe
exec-device(execd) Ejecución de ejecutables

Cmdlets de interacción de dispositivos

cmdlet Descripción
deploy-device(deployd) Implementación de paquetes de prueba en el dispositivo conectado
dir-device(dird) Directorio de lista
cd-device(cdd) Cambio del directorio del dispositivo
rmdir-device(rdd, rmdird) Quitar directorio
copy-device(cpd, copyd) Copiar archivos
del-device(deld) Eliminar archivo
mkdir-device(mdd, mkdird) Creación de un directorio
move-device(mvd, movido) Traslado de archivos
put-device(putd) Copia de archivos de un dispositivo local a un dispositivo remoto
get-device(getd) copiar archivos desde un dispositivo remoto a un dispositivo local
tlist-device(tlistd) Muestra información para cada tarea en ejecución
type-device(typed) Imprime el contenido de un archivo en el dispositivo en el terminal.
kill-device(killd)
reg-device(regd) Se usa para cualquier cosa relacionada con las claves del Registro.

Obtener información sobre el dispositivo y el entorno de TShell

cmdlet Descripción
dispositivo get-variable Muestra la dirección del dispositivo, el nombre y el directorio de trabajo.
Get-variable TShell Mostrar la versión de TShell instalada en el dispositivo

Cmdlets para la depuración

cmdlet Descripción
debug-device(debugd) Proceso de depuración

Cmdlets de conexión de dispositivos

open-device: conexión de tshell al dispositivo de destino

Para abrir una conexión, especifique la dirección IP de localhost (valor predeterminado: 127.0.0.1) o si kdnet está habilitado, use la dirección MAC.

PS> open-device 127.0.0.1

close-device: desconexión del dispositivo de destino conectado

Cuando haya terminado de trabajar en un dispositivo, cierre la conexión:

PS> close-device

Cmdlets de ejecución de dispositivos

cmd-device(cmdd): ejecutar comandos de cmd.exe

TShell expone comandos en ejecución a través de cmd.exe en el dispositivo y canaliza el código estándar, el error estándar y el código de salida a la canalización de PowerShell a través del comando 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

También expone algunos comandos comunes de cmd.exe a través de cmdlets dedicados, para los que suprime los mensajes (por ejemplo: /y para "copy") y devuelve la salida del comando como una cadena (nota: estos comandos están diseñados para mayor comodidad al trabajar desde el símbolo del sistema). Al escribir scripts de PowerShell, se debe usar el cmdlet cmd-device en su lugar).

exec-device(execd):run ejecutables

Para ejecutar un comando en el dispositivo, use el comando exec-device (execd). Toda la línea de comandos después de que se ejecuten los modificadores tal y como están en el dispositivo. Los argumentos del proceso que empiecen por "-" deben pasarse entre comillas (single o double) para que PowerShell no intente analizarlos. TShell esperará a que el proceso salga y se generará el código de salida en la consola.

PS C:\> execd windows\system32\cmd.exe
PS C:\> execd tux.exe '-d tuxdemo.dll'

Para pasar argumentos simples entre comillas dobles al proceso del lado del dispositivo, debe colocar todos los argumentos de proceso entre comillas simples (que es una cadena literal en PowerShell) al pasarlos a TShell.

PS C:\> execd tux.exe '-d tuxdemo.dll -c "arg1 arg2" -f results.log'

De forma predeterminada, la salida del proceso no se enviará al shell. Puede usar el modificador -output para canalizar tanto el error estándar como el estándar al host, ambos se devolverán como propiedades del valor devuelto del comando.

PS C:\> execd -output tux.exe '-d tuxdemo.dll'

De forma predeterminada, el comando se ejecutará sincrónicamente, lo que significa que TShell espera a que el proceso salga antes de volver al símbolo del sistema. Puede usar el modificador -async para ejecutar el proceso de forma asincrónica, en cuyo caso TShell simplemente inicia el proceso y devuelve inmediatamente.

PS C:\> execd -async tux '-d tuxdemo.dll -f results.log'

Cmdlets de interacción de dispositivos

deploy-device(deployd): implementación de paquetes de prueba en el dispositivo conectado

Para implementar un paquete en el dispositivo, use el comando deploy-device (implementado).

Sintaxis de Deploy-Device
 Deploy-Device -Packages <string[]> [-PackageRootPaths <string>] [-AlternatePackageRoots <string[]>]
    [-TestToolsPath <string>] [-DeployPackageMacroOverride <string>] [-PackageCache <string>] [-Timeout <int>]
    [-OnDevice] [-TestArchitecture <string>] [<CommonParameters>]

Ejemplo:

PS C:\> Deploy-Device -Packages Microsoft.OneCore.ATest.spkg
  -packageRootPath \\server\folder
  -alternatePackageRoots c:\packages\sd.binaries.x86fre\prebuilt

Para más información, ejecute get-help Deploy-Device -detailed.

Para implementar paquetes de prueba wow, agregue la opción -testarch. Ejemplo:

PS c:> Deploy-Device -Packages Microsoft-Windows-Test-TAEF -testarch wow64

Las entradas de TestArch admitidas son: amd64, x86, arm, arm64, wow64, arm64.arm, arm64.x86. Solo se implementarán paquetes nativos si no se especifica ningún testArch.

Directorio dir-device(dird):list

Puede enumerar los directorios en un dispositivo remoto:

dird

cd-device(cdd): cambio del directorio del dispositivo

TShell comprobará si el nuevo directorio existe en el dispositivo y si no lo hace. La notación dot-dot se admite para pasar al directorio primario y la $DeviceWD variable se actualiza cada vez.

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

Puede quitar una carpeta de un dispositivo remoto:

rmdird c:\foldertoremove

copy-device(cpd, copyd):copy files

Copiar archivos entre directorios en el sistema remoto. (Esto no copia los archivos entre el host y el sistema remoto. Vea getd and putd for that.)

del-device(deld):d elete file

Puede eliminar archivos de un dispositivo remoto:

deld file.bat

mkdir-device(mdd, mkdird):create new directory

Puede crear un directorio en un dispositivo remoto:

mkdird c:\newfolder

move-device(mvd, moved):move files

Puede mover carpetas de un lugar en un dispositivo remoto a otro:

moved c:\source\file.txt c:\destination\file.txt

put-device(putd):copy files to

Para copiar archivos en el dispositivo remoto, use el put-device (putd).

Al copiar un archivo en el dispositivo, puede especificar la ruta de acceso del nuevo archivo de dispositivo o el directorio en el que se debe copiar.

PS C:\> putd C:\hostdir\hostfile.txt C:\devicedir\devicefile.txt
PS C:\> putd C:\hostdir\hostfile.txt C:\devicedir

Los caracteres comodín solo se admiten para la ruta de acceso del host de origen, y las rutas de acceso del host y del dispositivo son relativas a los directorios de trabajo actuales.

PS C:\> putd C:\hostdir\* C:\devicedir
PS C:\> putd C:\hostdir\hostfile.txt .

Se admite la copia recursiva de directorios.

PS C:\> putd -r C:\hostdir\* C:\devicedir

get-device(getd): copiar archivos desde

Para copiar archivos desde el dispositivo, use los comandos get-device (getd).

Al copiar un archivo en o desde el dispositivo, puede especificar la ruta de acceso del nuevo archivo de dispositivo o el directorio en el que se debe copiar.

PS C:\> getd C:\devicedir\devicefile.txt C:\hostdir\hostfile.txt
PS C:\> getd C:\devicedir\devicefile.txt C:\hostdir

Los caracteres comodín solo se admiten para la ruta de acceso del host de origen, y las rutas de acceso del host y del dispositivo son relativas a los directorios de trabajo actuales.

PS C:\> getd C:\devicedir\devicefile.txt .

Se admite la copia recursiva de directorios.

PS C:\> getd -r C:\devicedir\ .

kill-device(killd)

reg-device(regd)

Se usa para cualquier cosa relacionada con las claves del Registro. regd query "insert setting here" se usa para consultar las claves del Registro en el dispositivo y regd add "insert setting here" se usa para agregar o cambiar la configuración del Registro.

tlist-device(tlistd)

Muestra el comando, la línea de comandos, el directorio de trabajo, el uso de memoria y los archivos DLL para cada tarea en ejecución.

type-device(typed)

Imprime el contenido de un archivo en el dispositivo en el terminal (similar al alias de PowerShell de escritorio "cat")

Obtener información sobre el dispositivo y el entorno de TShell

dispositivo get-variable*

Muestra la dirección del dispositivo, el nombre y el directorio de trabajo.

PS C:\> Get-Variable device*
  
Name                           Value
----                           -----
DeviceAddress                  10.225.96.216
DeviceName                     10.225.96.216
Dget-variable devices*

get-variable TShell*

Muestra la versión de TShell instalada en el dispositivo.

PS C:\> Get-Variable TShell*
  
Name                           Value
----                           -----
TShellInstallPath              C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\TShell\TShell
TShellVersion                  8.1.1801.9001

Cmdlets para la depuración

debug-device(debugd):d ebug process

Para que este comando funcione, debe instalar la versión más reciente del depurador.

Para adjuntar un cliente de depurador (windbg es el valor predeterminado) a un proceso de modo de usuario, use el comando debug-device (depurado). Se puede iniciar un nuevo proceso con el depurador asociado especificando la ruta de acceso del exe (puede ser relativa al directorio de trabajo actual del dispositivo).

PS C:\> debugd M:\windows\system32\cmd.exe

O bien, adjunte a un proceso existente especificando el PID, que se puede obtener mediante el comando tlist-device.

PS C:\> tlistd
...
1234 myproc.exe

PS C:\> debugd -pid 1234

Si no se especifica ninguno, el cliente del depurador se inicia con una conexión al dispositivo, pero no se adjunta ningún proceso.

PS C:\> debugd

También puede especificar la ruta de acceso del cliente del depurador que se usará con el modificador -dbg.

PS C:\> debugd -dbg C:\debuggers\ntsd.exe -pid 1234
Depuración de un proceso de aplicación moderna

Para depurar un proceso de aplicación moderno al iniciarse, adjunte al servicio DcomLaunch y habilite la depuración de procesos secundarios:

En TShell:

PS C:\> debugd -servicename dcomlaunch

A continuación, en el depurador:

.childdbg 1