从 cmd 运行 powershell 命令

从 cmd 运行 powershell 命令

我如何从 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 命令中已有的任何内部引号都将转换为“三重”引号("""

相关内容