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

PowerShell中使用Start-Process启动AnyDesk如何传递密码实现自动连接?

解决方案

错误原因

你之前的写法出错是因为AnyDesk的--with-password参数作用是告知程序需要从标准输入流读取密码,而非直接将密码作为启动参数传递,把密码放在ArgumentList里的写法不符合AnyDesk的CLI调用规则。

实现方法

方法1:使用Start-Process配合标准输入重定向

你需要借助临时文件将密码传递给进程的标准输入:

# 先将密码写入临时文件,注意使用ASCII编码避免字符解析异常
$config.connect_pw | Out-File -FilePath "anydesk_temp_pw.tmp" -Encoding ASCII -Force

# 启动进程时指定标准输入源,参数列表移除密码项
$app = Start-Process $config.anydesk_path -ArgumentList @($config.ip_addresses[$i], "--plain", "--with-password") -RedirectStandardInput "anydesk_temp_pw.tmp" -PassThru -NoNewWindow

# 等待进程读取密码后删除临时文件,避免密码泄露
Start-Sleep -Milliseconds 300
Remove-Item "anydesk_temp_pw.tmp" -Force

方法2:使用.NET Process类直接写入标准输入(更推荐)

该方法不需要创建临时文件,安全性和兼容性更好,也能正常获取进程ID:

# 配置进程启动信息
$processStartInfo = [System.Diagnostics.ProcessStartInfo]::new()
$processStartInfo.FileName = $config.anydesk_path
$processStartInfo.Arguments = "$($config.ip_addresses[$i]) --plain --with-password"
$processStartInfo.RedirectStandardInput = $true
$processStartInfo.UseShellExecute = $false
$processStartInfo.CreateNoWindow = $true

# 启动进程
$app = [System.Diagnostics.Process]::new()
$app.StartInfo = $processStartInfo
$null = $app.Start()

# 直接向标准输入流写入密码
$app.StandardInput.WriteLine($config.connect_pw)
$app.StandardInput.Flush()
$app.StandardInput.Close()

注意事项

  • 确保你使用的AnyDesk客户端版本支持--with-password参数,部分老旧版本无该特性
  • 如果密码包含特殊字符,推荐使用第二种方法,不会出现参数转义异常的问题
  • 执行完成后建议清空内存中存储密码的变量,降低泄露风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:08