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
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.
Você pode encontrar as mesmas informações sobre o Painel do Windows 10 IoT Core.
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.
Para iniciar o PowerShell como administrador, clique com o botão direito do mouse em Windows PowerShell e selecione Executar como administrador.
Agora você deve ver o console do PowerShell.
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
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>
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.
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
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.
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
eEnter-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.
Para alterar o nome do computador, use o
setcomputername
utilitário :setcomputername <new-name>
Reinicie o dispositivo para que a alteração entre em vigor. Você pode usar o comando da
shutdown
seguinte maneira:shutdown /r /t 0
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.