【Windows10 IoT开发系列】PowerShell的相关配置

原文:【Windows10 IoT开发系列】PowerShell的相关配置

可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备。PowerShell 是基于任务的命令行 Shell 和脚本语言,专为进行系统管理而设计。

1.​启动 PowerShell (PS) 会话

注:若要使用装有Windows10 IoT Core设备启动PS会话,首先需要在主机电脑与设备之间创建信任关系。

启动 Windows IoT 核心版设备后,与该设备相连的屏幕上将显示一个 IP 地址:

![Windows 10 IoT 核心版上的 CoreDefaultApp](/content/images/DefaultApp.png) 可在Windows10 IoT Core Watcher实用工具中找到相同信息。

【Windows10 IoT开发系列】PowerShell的相关配置Windows10 IoT Core启动界面

在本地电脑上启动管理员 PS 控制台。

(在 Windows“开始”菜单旁的“搜索 Web 和 Windows”文本框中键入“powershell”)

【Windows10 IoT开发系列】PowerShell的相关配置搜索Powershell

以管理员身份启动 PS,请右键单击“Windows PowerShell”项并选择“以管理员身份运行”:

【Windows10 IoT开发系列】PowerShell的相关配置管理员身份

Powershell控制台:

【Windows10 IoT开发系列】PowerShell的相关配置Powershell 主界面

注:需要在桌面上启动 WinRM 服务以启用远程连接,在 Powershell 控制台中,输入:

net start WinRM​

在 Powershell 控制台中,键入以下命令,从而使用相应的值替代 

Set-Item WSMan:\localhost\Client\TrustedHosts -Value

 输入 Y 以确认更改。

  • 现在,使用 Windows IoT 核心版设备启动会话,在管理员身份 PS 控制台中,键入:

  • Enter-PSSession -ComputerName -Credential \Administrator

在凭据对话框中,输入以下默认密码:p@ssw0rd

【Windows10 IoT开发系列】PowerShell的相关配置成功运行

更改账户密码:在 PowerShell 连接中发出以下命令

net user Administrator [new password]

完成操作后,需要使用具有新凭据的 Exit-PSSession 和 Enable-PSSession 来建立新的 PowerShell 会话。  

Exit-PSSession Enter-PSSession -ComputerName -Credential \Administrator​

2.Visual Studio 远程调试程序疑难解答

为了能够从 Visual Studio 2015 部署应用程序,需确保 Visual Studio 远程调试程序正在 Windows IoT 核心版设备上运行。远程调试器应在计算机启动时自动启动,若要检查启动情况,请使用 tlist 命令列出 powershell 中所有正在运行的进程,应有两个 msvsmon.exe 的实例正在设备上运行。  

在长时间都处于非活动状态后,Visual Studio 远程调试器可能会出现超时。若Visual Studio 无法连接到 Windows IoT 核心版设备,请尝试重新启动设备。

3.​配置 Windows IoT 核心版设备

​更改“计算机名”,请使用 setcomputername 实用工具:

setcomputername

重新启动设备使更改生效,使用 shutdown 命令:   

shutdown /r /t 0

重新启动后,由于计算机名称已更改,需要重新运行此命令,以便连接到设备:   

 Set-Item WSMan:\localhost\Client\TrustedHosts -Value

4.已知问题与解决方法

​问题:PowerShell 安全策略中的一个已知 Bug 会导致远程会话内的清单出现以下问题: 

① Get-Help 返回异常匹配项。

② 指定模块上的 Get-Command 将返回空命令列表。

③ 从以下任意模块运行 cmdlet 将引发 CommandNotFoundException: Appx、NetAdapter、NetSecurity、NetTCPIP、PnpDevice。

④ 上述任意模块上的 Import-Module 将引发 PSSecurityException 异常(包含 UnauthorizedAccess)。模块自动加载似乎也不起作用。

解决方法: 将远程 PowerShell 会话内的执行策略修改为“RemoteSigned”。

有关其他执行策略的更多详细信息,请参考https://technet.microsoft.com/zh-cn/library/ee176961.aspx

问题:时,某些模块中的 cmdlet(如 NetAdapter)不可见。例如,Get-Module NetAdapter 将返回一个空列表。  

解决方法: 将“-Force”参数与 Import-Module 结合使用。例如,Import-Module NetAdapter -Force。 

 问题: 将执行策略设置为“AllSigned”时会中断 PS 远程控制。创建远程会话的后续尝试均失败,并且 SecurityException 正在加载 Typesv3.ps1xml。 

 解决方法: 使用 winrs.exe 还原 Powershell 执行策略:  

① 更改控制台代码页 Chcp 65001

 ② 登录到远程 cmd.exe shell Winrs.exe -r: -u: -p: cmd.exe 

③ 在远程 cmd.exe 内,修改相应的注册表项 reg add HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /d RemoteSigned /f 

④ 退出远程 cmd.exe 会话 exit

本文​主要资源来自Windows 开发中心。

 

上一篇:Python --time 计时小程序


下一篇:从Netflix的Hystrix框架理解服务熔断和服务降级