当我尝试从批处理文件执行 运行 PowerShell 命令时出现错误
I'm getting an error when I try to run PowerShell commands from a batch file
我有一个现有的批处理文件。我需要在 C: 上显示免费 space。我发现最好的方法是使用 PowerShell。
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object FreeSpace
Write-Host ("{0}GB free" -f [math]::truncate($disk.FreeSpace / 1GB))
我可以通过退出来修改它,结果在错误级别。
Powershell:
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Freespace
Exit ("{0}" -f [math]::truncate($disk.freespace / 1GB))
退出后PS:
set FreeSpace=%errorlevel%
echo %FreeSpace%
当我从命令提示符 运行 它时,它工作得很好。要使其在批处理文件中运行,我需要转义几个字符。
Powershell $disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID=`'C:`'" ^| Select-Object Freespace ^
Exit ("{0}" -f [math]::truncate($disk.freespace / 1GB))
set FreeSpace=%errorlevel%
echo %FreeSpace%
但是我得到错误:
Select-Object : A positional parameter cannot be found that accepts argument 'Exit'.
好像Select-Object正在解析下一行。知道我做错了什么吗?
- 使用
;
分号作为Powershell命令分隔符;
- 使用另一种转义引号(双引号被扼杀);
- 您可以在 Exit 中使用整数。
代码:
@echo OFF
Powershell -nopro $disk = Get-WmiObject Win32_LogicalDisk -Filter """"DeviceID='D:'"""" ^| Select-Object Freespace; ^
Write-Host (""""{0}GB free"""" -f [math]::round($disk.FreeSpace / 1GB)) -Fore Yellow; ^
Exit ([math]::truncate($disk.freespace / 1GB))
set FreeSpace=%errorlevel%
echo %FreeSpace%
输出:.\SO131203.bat
796GB free
796
我有一个现有的批处理文件。我需要在 C: 上显示免费 space。我发现最好的方法是使用 PowerShell。
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object FreeSpace
Write-Host ("{0}GB free" -f [math]::truncate($disk.FreeSpace / 1GB))
我可以通过退出来修改它,结果在错误级别。
Powershell:
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Freespace
Exit ("{0}" -f [math]::truncate($disk.freespace / 1GB))
退出后PS:
set FreeSpace=%errorlevel%
echo %FreeSpace%
当我从命令提示符 运行 它时,它工作得很好。要使其在批处理文件中运行,我需要转义几个字符。
Powershell $disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID=`'C:`'" ^| Select-Object Freespace ^
Exit ("{0}" -f [math]::truncate($disk.freespace / 1GB))
set FreeSpace=%errorlevel%
echo %FreeSpace%
但是我得到错误:
Select-Object : A positional parameter cannot be found that accepts argument 'Exit'.
好像Select-Object正在解析下一行。知道我做错了什么吗?
- 使用
;
分号作为Powershell命令分隔符; - 使用另一种转义引号(双引号被扼杀);
- 您可以在 Exit 中使用整数。
代码:
@echo OFF
Powershell -nopro $disk = Get-WmiObject Win32_LogicalDisk -Filter """"DeviceID='D:'"""" ^| Select-Object Freespace; ^
Write-Host (""""{0}GB free"""" -f [math]::round($disk.FreeSpace / 1GB)) -Fore Yellow; ^
Exit ([math]::truncate($disk.freespace / 1GB))
set FreeSpace=%errorlevel%
echo %FreeSpace%
输出:.\SO131203.bat
796GB free 796