запустить команду powershell из cmd

32

как я могу запустить эту команду из cmd:

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

я все еще получаю эту ошибку:

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

Кассам Махмуд
источник
3
Ваша проблема может быть вашим внутренним набором кавычек. Попробуйте либо удалить их, либо, если они должны быть использованы, попробуйте использовать этого парня: «он же апостроф на месте».
DeathByTensors
2
Предупреждение - пожалуйста, не используйте матом в ваших сообщениях. Я удалил это для тебя. Обратите внимание, что другие пользователи могли пометить ваше сообщение как «грубое или оскорбительное», что может привести к потере или приостановке повторений. Пожалуйста, прочитайте Be Nice : «Избегайте вульгарных терминов и всего, что наводит на мысль о сексе»
DavidPostill

Ответы:

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\" "
wisbucky
0

Я поместил следующие команды в командный файл для сброса Edge (который время от времени вызывал некоторые проблемы). Пакетный файл был запущен на уровне администратора. Обратите внимание на тройные кавычки в строке powershell. Этот пример может прояснить ситуацию для тех, кто пытается запустить команду powershell из командной строки «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. Между прочим, эта строка представляет собой одну строку с надписью «For Each» и «-Register» в этом поле для комментариев. Это должна быть одна строка в командном файле (или в командной строке, если она введена вручную в cmdсеанс).

Важно то, что после слова «PowerShell» кавычки (») запускают и заканчивают команду, а любые внутренние кавычки, уже находящиеся в передаваемой команде powershell, преобразуются в« тройные »кавычки ( """)

Крис Изюм
источник