Annie
Annie

Reputation: 3190

Run PowerShell command (with pipeline) in CMD

When we run the following command in PowerShell:

get-date | sc C:\temp\date.log

it creates date.log file with current date.

But if we run the same via CMD:

powershell get-date | sc C:\temp\date.log

It complains:

ERROR: Unrecognized command

DESCRIPTION:
        SC is a command line program used for communicating with the
        Service Control Manager and services.
USAGE:
        sc <server> [command] [service name] <option1> <option2>...

Apparently, CMD confuses pipeline meant for POSH, with its own.

Can anyone point me how to make it run via CMD?

Thanks in anticipation.

Upvotes: 8

Views: 16833

Answers (2)

js2010
js2010

Reputation: 27423

As long as the pipe symbol is escaped from cmd with double-quotes, it will work. Sc is an unfortunate alias, since there's an sc.exe command in windows. ? or where-object might be easier than trying to embed an extra set of double-quotes in a query.

powershell "get-date | set-content c:\tmp\date.log"

powershell "get-ciminstance win32_volume | ? label -like 'month *' | select label"

Upvotes: 0

juanvan
juanvan

Reputation: 681

powershell -Command " & {Get-Date | sc c:\tmp\date.log}"

CMD and PowerShell

Upvotes: 17

Related Questions