Compartilhar via


Usando o PowerShell para Windows IoT

Observação

Adicione o código aberto versão do PowerShell usando Import-PSCoreRelease (importps). Você ainda precisará IOT_POWERSHELL recurso para incluir binários do WinRM

Configure e gerencie remotamente qualquer dispositivo Windows 10 IoT Core usando Windows PowerShell. O PowerShell é uma linguagem de script e shell de linha de comando baseada em tarefa, projetada especialmente para administração do sistema.

Siga estas etapas para configurar corretamente seu dispositivo executando Windows 10 IoT Core funcionar bem com o Visual Studio 2017.

Iniciando uma sessão do PowerShell

  1. Para iniciar uma sessão do PowerShell com seu dispositivo Windows 10 IoT Core, primeiro você precisará criar uma relação de confiança entre o computador host e o dispositivo. Depois de iniciar o dispositivo Windows IoT Core, um endereço IP será mostrado na tela anexada ao dispositivo.

    DefaultApp no Windows 10 IoT Core

    Você pode encontrar as mesmas informações sobre o Painel do Windows 10 IoT Core.

  2. Abra um console do PowerShell de administrador no computador local. Digite powershell na caixa Pesquisar na Web e no Windows perto do menu Iniciar do Windows. O Windows encontrará o PowerShell em seu computador.

    Localizar o PowerShell

  3. Para iniciar o PowerShell como administrador, clique com o botão direito do mouse em Windows PowerShell e selecione Executar como administrador.

    Executar o PowerShell como administrador

    Agora você deve ver o console do PowerShell.

    Console do PS

  4. Talvez seja necessário iniciar o serviço WinRM em sua área de trabalho para habilitar conexões remotas. Para fazer isso, no console do PowerShell, digite o seguinte comando:

        net start WinRM
    
  5. No console do PowerShell, digite o seguinte, substituindo <machine-name or IP address> pelo valor apropriado (usar o nome do computador é o mais fácil, mas se o dispositivo não for nomeado exclusivamente em sua rede, tente o endereço IP):

          Set-Item WSMan:\localhost\Client\TrustedHosts -Value <machine-name or IP Address>
    
  6. Insira Y para confirmar a alteração.

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

    Observação

    Se você quiser conectar vários dispositivos, poderá usar vírgulas e aspas para separar cada dispositivo.

  7. Agora você pode iniciar uma sessão com seu dispositivo Windows IoT Core. No console do PowerShell do administrador, digite:

         Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
    
  8. Na caixa de diálogo de credenciais, insira a seguinte senha padrão: p@ssw0rd

Observação

O processo de conexão não é imediato e pode levar até 30 segundos.

Se você se conectou com êxito ao dispositivo, deverá ver o endereço IP do dispositivo antes do prompt.

Console do PowerShell

  1. Atualize a senha da sua conta. É altamente recomendável que você atualize a senha padrão para a conta de Administrador. Para fazer isso, emita os seguintes comandos em sua conexão do PowerShell:

    a. Substitua por [new password] uma senha forte:

    net user Administrator [new password]
    

    b. Em seguida, estabeleça uma nova sessão do PowerShell usando Exit-PSSession e Enter-PSSession com as novas credenciais.

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

Comandos do PowerShell comumente usados

Solução de problemas com Depurador Remoto do Visual Studio

Para poder implantar aplicativos do Visual Studio 2017, você precisará verificar se o Depurador Remoto do Visual Studio está em execução no dispositivo Windows IoT Core. O depurador remoto deve abrir automaticamente quando você iniciar o computador. Para marcar dupla, use o tlist comando para listar todos os processos em execução do PowerShell. Deve haver duas instâncias de msvsmon.exe em execução no dispositivo.

É possível que o Depurador Remoto do Visual Studio tenha um tempo limite após longos períodos de inatividade. Se o Visual Studio não puder se conectar ao dispositivo Windows IoT Core, tente reiniciar o dispositivo.

Configurar seu dispositivo Windows IoT Core

Se desejar, você pode renomear seu dispositivo.

  1. Para alterar o nome do computador, use o setcomputername utilitário :

    setcomputername <new-name>
    
  2. Reinicie o dispositivo para que a alteração entre em vigor. Você pode usar o comando da shutdown seguinte maneira:

    shutdown /r /t 0
    
  3. Como o nome do computador foi alterado, depois de reiniciar, você precisará executar novamente este comando para se conectar ao seu dispositivo usando o novo nome:

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

Seu dispositivo Windows IoT Core agora deve estar configurado corretamente e pronto para uso!

Utilitários comumente usados

Para obter uma lista de comandos e utilitários que você pode usar com o PowerShell, consulte a página Utilitários de Linha de Comando .

Problemas conhecidos e limitações

PROBLEMA: um bug conhecido nas políticas de segurança do PowerShell faz com que os seguintes problemas se manifestem na sessão remota:

  • Get-Help retorna correspondências inesperadas.
  • Get-Command em um módulo especificado retorna uma lista de comandos vazia.
  • Executar um cmdlet de qualquer um desses módulos lança CommandNotFoundException: Appx, NetAdapter, NetSecurity, NetTCPIP, PnpDevice.
  • Import-Module em qualquer um dos módulos acima gera a exceção PSSecurityException com UnauthorizedAccess. O carregamento automático do módulo também não parece funcionar.

Solução alternativa: modifique a política de execução dentro da sessão remota do PowerShell para RemoteSigned. Para obter mais informações sobre as diferentes políticas de execução, consulte Usando o cmdlet Set-ExecutionPolicy.

PROBLEMA: os cmdlets de alguns módulos, como o NetAdapter, às vezes não são visíveis. Por exemplo, Get-Module NetAdapter retorna uma lista vazia.

Solução alternativa: use o parâmetro -Force com Import-Module. Por exemplo, Import-Module NetAdapter -Force.

PROBLEMA: definir a política de execução como "AllSigned" interrompe a comunicação remota do PowerShell. As tentativas subsequentes de criar uma sessão remota falham com um SecurityException carregando Typesv3.ps1xml.

Solução alternativa: use winrs.exe para restaurar a política de execução do PowerShell:

  • Alterar página de código do console Chcp 65001
  • Fazer logon em um shell de cmd.exe remoto Winrs.exe -r:<target> -u:<username> -p:<password> cmd.exe
  • No cmd.exe remoto, modifique a chave do Registro apropriada reg add HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /d RemoteSigned /f
  • Sair da sessão de cmd.exe remota exit

Outros problemas conhecidos

  • Em scripts do PowerShell, os atributos para a classe ou enumeração do PowerShell não funcionam. A adição de resultados atribuídos na seguinte exceção gerada: o tipo deve ser um objeto Type de runtime.

  • Não há suporte para a comunicação remota do CIM e do PowerShell de saída. A funcionalidade relevante em cmdlets confiáveis não funcionará. Isso inclui Enter-PSSession, Get-Job, Receive-Job, Import-Module, Invoke-Command e Copy-Item.

  • Os comandos SecureString ConvertFrom-SecureString e ConvertTo-SecureString não funcionam, a menos que a sessão seja criada usando a autenticação CredSSP. Caso contrário, o parâmetro -Key deverá ser especificado. Para obter detalhes sobre como configurar a autenticação credSSP, consulte Habilitar a funcionalidade de "segundo salto" do PowerShell com CredSSP.