98

how i can run this command from cmd :

powershell.exe "(get-process | ? {$_.Description -eq "Sysinter Process Explorer"}) | select processname | out-file $env:APPDATA\example.txt"

i still get this error :

You must provide a value expression on the right-hand side of the '-eq' operato r. At line:1 char:37 + (get-process | ? {$_.Description -eq <<<< Sysinternals Process Explorer}) | select processname | out-file $env:APPDATA\example.txt + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId : ExpectedValueExpression

DavidPostill
  • 162,382

2 Answers2

139
powershell -command "get-process | ? {$_.Description -eq 'Sysinter Process Explorer'} | select processname | out-file $env:APPDATA\example.txt"

basically you have a powershell command and paste it in between these quotes to call it from CMD

powershell -command " #PasteCodeHere "

inside these quotes you have to work with ' otherwise it will interrupt your command parameter.

Edit: Additional Information:

quite often you will encounter this: powershell -command "& 'somestuff'"

the & is used to call a File. when you're only using a command & is unnessecary, when you want to call a script, you should use it.

powershell -command "& 'C:\foobar.ps1'"

You could also use powershell -file C:\file.ps1 to call a script

SimonS
  • 9,869
0

I placed the following commands into a batch file to reset Edge (which has been giving some problems from time to time). The batch file was then run at Administrator level. Please note the triple quotes in the powershell line. This example may clarify things for those trying to run a powershell command from a "cmd" command line.

@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}"

Note the "triple" quotes in the Powershell line. That line by the way is a single line with "For Each" and "-Register" being word-wrapped in this comment-box. It should be a single line though in the batch file (or on the command line if manually typed into a cmd session).

The important thing is that after the word "PowerShell" inverted commas (") start and end the command and any internal inverted commas already in the powershell command being passed are converted to "triple" quotes (""")

tinlyx
  • 1,580