запустити команду powerhell від cmd


32

як я можу запустити цю команду з cmd:

powershell.exe "(get-process |? {$ _. Опис -eq" Провідник Sysinter Process "}) | виберіть ім'я процесу | out-file $ env: APPDATA \ example.txt"

я все ще отримую цю помилку:

Ви повинні надати значення вираження праворуч операції '-eq' r. У рядку: 1 char: 37 + (get-process |? {$ _. Опис -eq <<<< Sysinternals Process Explorer}) | виберіть ім'я процесу | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: очікуванаValueExpression


3
Вашою проблемою може бути ваш внутрішній набір лапок. Спробуйте або видалити їх, або, якщо вони повинні бути використані, спробуйте скористатися цим хлопцем: 'також апостроф на місці.
DeathByTensors

2
Попередження - не використовуйте нецензурності у своїх публікаціях. Я вийняв це для вас. Зауважте, що інші користувачі можуть позначити вашу публікацію як "грубу чи образливу", що призводить до можливих втрат або призупинення повторень. Будь ласка, читайте будь ласка : "Уникайте вульгарних термінів і нічого сексуального
натякання

Відповіді:


41
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можете зателефонувати за сценарієм


ти найкраща людина <3, над якою працює
Кассам Махмуд

3
Якщо команда, яка буде виконуватися, має лапки, їх потрібно подвоїти. Приклад: powershell -command "dir" "c: \ Program Files" ""
Myobis

1
@myobis або ви можете просто використовувати одинарні цитатиpowershell -command " dir 'C:\Program Files' "
SimonS

1
@myobis Насправді подвоєння лапок не працює (у Windows 10 cmd). Але за допомогою втечі зворотної косої powershell -command "dir \"c:\Program Files\" "
лінії

0

Наступні команди я помістив у пакетний файл, щоб скинути Edge (який час від часу виникає з певними проблемами). Потім пакетний файл запускався на рівні адміністратора. Зверніть увагу на потрійні лапки в рядку повноважень. Цей приклад може пояснити речі для тих, хто намагається запустити команду shellhell з командного рядка "cmd".

@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. До речі, цей рядок - це єдиний рядок, у якому поле "коментарі" та "-реєстратор" зафіксовано словом. Це повинен бути один рядок, хоча в пакетному файлі (або в командному рядку, якщо вручну введено cmdсеанс).

Важливим є те, що після слова "PowerShell" перевернуті коми (") запускають і закінчують команду, а будь-які внутрішні перевернуті коми, які вже перебувають у команді powerhell, передаються, перетворюються на" потрійні "лапки ( """)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.