运行 来自 CMD 的 PowerShell 命令给出位置参数错误
Running PowerShell command from CMD gives positional parameter error
我有这个 PowerShell 命令:
Get-WmiObject -Query "Select * from CIM_DataFile Where Extension = 'ost'" |
Select-Object 'Name' |
Out-File C:\temp\ost.txt -Append
但我需要 运行 它形成一个命令提示符。我 运行 是这样设置的:
powershell.exe -ExecutionPolicy ByPass -Command "Get-WmiObject -Query "Select * from CIM_DataFile Where Extension = 'ost'" | Select-Object 'Name' | Out-File C:\temp\ost.txt -Append"
我收到这个错误:
Get-WmiObject : A positional parameter cannot be found that accepts argument '*'.
At line:1 char:1
+ Get-WmiObject -Query Select * from CIM_DataFile Where Extension = 'os ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand
我如何运行正确?
您必须转义 嵌套 "
个字符。在您的命令中,最稳健的做法是 \""
(sic):
PowerShell.exe -c "Get-WmiObject -Query \""Select * ... 'ost'\"" | Select ..."
注意事项:使用 \""
与 powershell.exe
配合使用效果很好且稳健(对于 PowerShell pwsh
Core ),但不适用于 其他 程序,例如 python
、ruby
、perl
或 node
。
请参阅 了解详细说明,包括如何为其他程序转义。
我有这个 PowerShell 命令:
Get-WmiObject -Query "Select * from CIM_DataFile Where Extension = 'ost'" |
Select-Object 'Name' |
Out-File C:\temp\ost.txt -Append
但我需要 运行 它形成一个命令提示符。我 运行 是这样设置的:
powershell.exe -ExecutionPolicy ByPass -Command "Get-WmiObject -Query "Select * from CIM_DataFile Where Extension = 'ost'" | Select-Object 'Name' | Out-File C:\temp\ost.txt -Append"
我收到这个错误:
Get-WmiObject : A positional parameter cannot be found that accepts argument '*'. At line:1 char:1 + Get-WmiObject -Query Select * from CIM_DataFile Where Extension = 'os ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-WmiObject], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.GetWmiObjectCommand
我如何运行正确?
您必须转义 嵌套 "
个字符。在您的命令中,最稳健的做法是 \""
(sic):
PowerShell.exe -c "Get-WmiObject -Query \""Select * ... 'ost'\"" | Select ..."
注意事项:使用 \""
与 powershell.exe
配合使用效果很好且稳健(对于 PowerShell pwsh
Core ),但不适用于 其他 程序,例如 python
、ruby
、perl
或 node
。
请参阅