powershell - 喜欢在变量中获取 powershell 脚本的输出以在批处理文件中使用
问题描述
我有以下“powershell脚本”
Get-WMIObject -Query "SELECT * from win32_logicaldisk WHERE DriveType = '3'" | Measure-Object -Property Size -Sum | select -ExpandProperty SUm
我想用它来实现它,但我的 var 变量是空的。我认为它与“或”有关,但我是新手,我对脚本的了解不是那么好。有人可以帮我解决这个愚蠢的事情吗?
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -noprofile {Get-WMIObject -Query "SELECT * from win32_logicaldisk WHERE DriveType = '3'" | Measure-Object -Property Size -Sum | select -ExpandProperty SUm}`) DO (
SET var=%%F
解决方案
主要问题是 PowerShell 中的许多字符批量执行其他操作,它们会干扰for
循环的工作方式。将其与进入for /F
循环的额外字符串处理层相结合,需要大量额外的转义。
最终,所有内容的引号和双引号加上转义内部引号似乎可以解决问题。
@echo off
FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -noprofile "Get-WMIObject -Query \""SELECT * from win32_logicaldisk WHERE DriveType = '3'\"" | Measure-Object -Property Size -Sum | select -ExpandProperty Sum"`) DO (
SET var=%%F
)
echo %var%
推荐阅读
- linux - xv-6 make 显示为最新,即使有更改
- ios - WKWebview goBack 函数失败并出现 didFailNavigation 错误 kCFURLErrorCancelled
- angular - Angular - 从特定组件实例获取数据,以便能够通过单击按钮与之交互
- sql - PostgreSQL递归查询计算父值
- php - 启动 symfony 项目时出错(意外标记 `newline' 附近的语法错误)。会不会是php版本不兼容?
- python - (Python) 用于开发目的的进程启动器
- mysql - CakePHP 4 没有从 DB 中获取新添加的字段
- c# - c# blazor server - 将类对象从子级传递给父级
- excel - Case中的多个条件触发单元格更改
- mysql - SQL SUMIFS 检查日期是否在范围内