原文:【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实用工具中找到相同信息。
IoT Core启动界面
在本地电脑上启动管理员 PS
控制台。
(在 Windows“开始”菜单旁的“搜索 Web 和
Windows”文本框中键入“powershell”)
以管理员身份启动 PS,请右键单击“Windows
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
更改账户密码:在 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
开发中心。