Windows PowerShell 命令未在批处理脚本中执行
Windows PowerShell command not executed in a batch script
我在批处理文件中编写了以下命令,以通过 powershell 命令从远程 URL 获取计算机的 public IP:
@echo off
setlocal EnableDelayedExpansion
call :MyIP2
timeout /t 50
EXIT /B 0
:MyIP2
echo Obtaining my IP...
For /f %%A in ('powershell -NonI -NoP -C "(Invoke-Webrequest http://componentsearch.everscrape.com/scraper/ip).content"') Do echo %%A
EXIT /B 0
现在,当我尝试执行批处理文件时(甚至 运行 作为管理员),我得到了以下输出,而不是我正在使用的计算机的 public IP。
Obtaining my IP...
Invoke-Webrequest
Internet
At
+
+
+
+
d
我目前 运行正在 Windows 家中安装所有更新。非常感谢任何帮助。
这样试试:
For /f "tokens=* delims=" %%A in ('powershell -NonI -NoP -C "(Invoke-Webrequest """http://componentsearch.everscrape.com/scraper/ip""").content"') Do echo %%A
或
echo Obtaining my IP...
for /f "tokens=* delims=" %%A in (
'powershell -NonI -NoP -C "(Invoke-Webrequest """http://componentsearch.everscrape.com/scraper/ip""").content"'
) do (
set "my_ip=%%A"
)
echo %my_ip%
URL 需要用双引号引起来,但为了在批处理调用时转义它们,您需要使用三重双引号。
这个问题似乎出现在全新安装的 windows 上。要修复,请启动 Internet Explorer 和 select 推荐设置。
发布一个答案以确保对此有清晰的认识。
- 您在问题中指定除了这台设备外,所有其他设备都可以使用您当前的脚本。
- 您在尝试 Npocmaka 提供的颂歌后发布了一个错误,其中指出:
Invoke-Webrequest : The response content cannot be parsed because the Internet Explorer engine is not available, or Internet Explorer's first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again. At line:1 char:2 + (Invoke-Webrequest "http://componentsearch.everscrape.com/scraper/ip" ... +
这个错误有一个明确的信息,实际上是两个。它向您展示了对 IE 作为 windows 解析器的依赖性,更重要的是,它向您展示了这一行中的修复:
Specify the UseBasicParsing parameter and try again
只需添加 -UseBasicParsing
参数即可直接解决问题,而无需最初 运行 IE。
也有明确规定
我在批处理文件中编写了以下命令,以通过 powershell 命令从远程 URL 获取计算机的 public IP:
@echo off
setlocal EnableDelayedExpansion
call :MyIP2
timeout /t 50
EXIT /B 0
:MyIP2
echo Obtaining my IP...
For /f %%A in ('powershell -NonI -NoP -C "(Invoke-Webrequest http://componentsearch.everscrape.com/scraper/ip).content"') Do echo %%A
EXIT /B 0
现在,当我尝试执行批处理文件时(甚至 运行 作为管理员),我得到了以下输出,而不是我正在使用的计算机的 public IP。
Obtaining my IP...
Invoke-Webrequest
Internet
At
+
+
+
+
d
我目前 运行正在 Windows 家中安装所有更新。非常感谢任何帮助。
这样试试:
For /f "tokens=* delims=" %%A in ('powershell -NonI -NoP -C "(Invoke-Webrequest """http://componentsearch.everscrape.com/scraper/ip""").content"') Do echo %%A
或
echo Obtaining my IP...
for /f "tokens=* delims=" %%A in (
'powershell -NonI -NoP -C "(Invoke-Webrequest """http://componentsearch.everscrape.com/scraper/ip""").content"'
) do (
set "my_ip=%%A"
)
echo %my_ip%
URL 需要用双引号引起来,但为了在批处理调用时转义它们,您需要使用三重双引号。
这个问题似乎出现在全新安装的 windows 上。要修复,请启动 Internet Explorer 和 select 推荐设置。
发布一个答案以确保对此有清晰的认识。
- 您在问题中指定除了这台设备外,所有其他设备都可以使用您当前的脚本。
- 您在尝试 Npocmaka 提供的颂歌后发布了一个错误,其中指出:
Invoke-Webrequest : The response content cannot be parsed because the Internet Explorer engine is not available, or Internet Explorer's first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again. At line:1 char:2 + (Invoke-Webrequest "http://componentsearch.everscrape.com/scraper/ip" ... +
这个错误有一个明确的信息,实际上是两个。它向您展示了对 IE 作为 windows 解析器的依赖性,更重要的是,它向您展示了这一行中的修复:
Specify the UseBasicParsing parameter and try again
只需添加 -UseBasicParsing
参数即可直接解决问题,而无需最初 运行 IE。