You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何相同cmdkey+mstsc命令在bat生效,PowerShell脚本却仍需输凭据?

为何相同cmdkey+mstsc命令在BAT生效,PowerShell却失效?

核心问题:PowerShell与CMD的引号解析逻辑不同

在CMD脚本里,你写的cmdkey /generic:"Wk123"会把带双引号的"Wk123"完整传给cmdkey;但PowerShell会将外层双引号视为参数解析的边界,实际传给cmdkey的是不带引号的Wk123。

这直接导致凭据匹配失败:CMD运行后存储的凭据目标是"Wk123",PowerShell运行后存储的是Wk123,而mstsc /v:Wk123调用时会匹配CMD风格的带引号目标,自然找不到PowerShell存储的凭据,只能弹出登录对话框。

验证与修复方法

验证问题

打开系统凭据管理器,对比两种脚本运行后的凭据:

  • BAT脚本运行后,凭据目标名称为"Wk123"
  • PowerShell脚本运行后,凭据目标名称为Wk123

修复方案

要让PowerShell把带引号的内容完整传给cmdkey,有两种简单方式:

  1. 用反引号`转义双引号:
cmdkey /generic:`"Wk123`" /user:`"myLogin`" /pass:`"myPassword`"
mstsc /v:Wk123
  1. 用单引号包裹整个参数:
cmdkey '/generic:"Wk123"' '/user:"myLogin"' '/pass:"myPassword"'
mstsc /v:Wk123

两种方式都能让cmdkey存储带引号的目标名称,与mstsc的查找逻辑匹配,实现自动登录。

额外注意点

如果用管理员权限运行PowerShell,存储的凭据会在管理员上下文隔离存储,普通用户打开的mstsc无法访问,建议用普通权限窗口运行脚本。

内容的提问来源于stack exchange,提问作者fascynacja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:10:20