我如何从 cmd 运行此命令:
powershell.exe“(get-process |?{$_.Description -eq“Sysinter Process Explorer”})| 选择进程名称| out-file $env:APPDATA\example.txt”
我仍然收到此错误:
您必须在“-eq”运算符的右侧提供一个值表达式。在第 1 行,字符:37 + (get-process | ? {$_.Description -eq <<<< Sysinternals Process Explorer}) | select processname | out-file $env:APPDATA\example.txt + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ExpectedValueExpression
答案1
powershell -command "get-process | ? {$_.Description -eq 'Sysinter Process Explorer'} | select processname | out-file $env:APPDATA\example.txt"
基本上你有一个 powershell 命令并将其粘贴在这些引号之间以便从 CMD 调用它
powershell -command " #PasteCodeHere "
在这些引号中您必须使用它,'
否则它将中断您的命令参数。
编辑:附加信息:
你会经常遇到这种情况:powershell -command "& 'somestuff'"
用于&
调用一个文件。当你只使用一个命令&
是不必要的时,当你想调用一个脚本时,你应该使用它。
powershell -command "& 'C:\foobar.ps1'"
您还可以使用powershell -file C:\file.ps1
调用脚本
答案2
我将以下命令放入批处理文件中以重置 Edge(它有时会出现一些问题)。然后以管理员级别运行该批处理文件。请注意 powershell 行中的三重引号。此示例可能会为那些试图从“cmd”命令行运行 powershell 命令的人澄清一些事情。
@echo off
c:
cd %userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
rmdir /s /q
userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
powershell "Get-AppXPackage -AllUsers -Name Microsoft.MicrosoftEdge | Foreach
{Add-AppxPackage -DisableDevelopmentMode -
Register"""$($_.InstallLocation)\AppXManifest.xml""" -Verbose}"
请注意 Powershell 行中的“三重”引号。顺便说一下,该行是一行,其中“For Each”和“-Register”在此注释框中被换行。但在批处理文件中(或在命令行中,如果手动输入到会话中cmd
)它应该是一行。
重要的是,在单词“PowerShell”之后的引号(“”)开始和结束命令,并且传递的 powershell 命令中已有的任何内部引号都将转换为“三重”引号("""
)