jalankan perintah powershell dari cmd

30

bagaimana saya bisa menjalankan perintah ini dari cmd:

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

saya masih mendapatkan kesalahan ini:

Anda harus memberikan ekspresi nilai di sisi kanan operato '-eq'. Pada baris: 1 char: 37 + (get-process |? {$ _. Keterangan -eq <<<< Sysinternals Process Explorer}) | pilih nama proses | keluar-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValueExpression

Qassam Mahmoud
sumber
3
Masalah Anda mungkin adalah set tanda kutip dalam diri Anda. Cobalah menghapusnya atau jika harus digunakan, coba gunakan orang ini: 'alias tanda kutip di tempat.
DeathByTensors
2
Peringatan - tolong jangan gunakan kata-kata kotor di posting Anda. Saya sudah menghapusnya untuk Anda. Perhatikan bahwa pengguna lain mungkin telah menandai pos Anda sebagai "tidak sopan atau kasar" yang mengarah pada kemungkinan kehilangan atau penangguhan rep. Harap baca Jadilah Baik : "Hindari istilah-istilah vulgar dan apa pun yang menyarankan secara seksual"
DavidPostill

Jawaban:

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

pada dasarnya Anda memiliki perintah PowerShell dan tempel di antara kutipan ini untuk menyebutnya dari CMD

powershell -command " #PasteCodeHere "

di dalam kutipan ini Anda harus bekerja 'jika tidak maka akan mengganggu parameter perintah Anda.

Edit: Informasi Tambahan:

cukup sering Anda akan menemukan ini: powershell -command "& 'somestuff'"

yang &digunakan untuk memanggil File. ketika Anda hanya menggunakan perintah &tidak sehat, saat Anda ingin memanggil skrip, Anda harus menggunakannya.

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

Anda juga dapat menggunakan powershell -file C:\file.ps1untuk memanggil skrip

SimonS
sumber
kamu adalah orang terbaik <3 yang berfungsi
Qassam Mahmoud
3
Jika perintah yang akan dieksekusi memiliki tanda kutip, mereka harus digandakan. Contoh: powershell -command "dir" "c: \ Program Files" ""
Myobis
1
@myobis atau Anda bisa menggunakan tanda kutip tunggalpowershell -command " dir 'C:\Program Files' "
SimonS
1
@myobis Sebenarnya, menggandakan kutipan tidak bekerja (di Windows 10 cmd). Tetapi menggunakan backslash melarikan diri tidak:powershell -command "dir \"c:\Program Files\" "
wisbucky
0

Saya menempatkan perintah berikut ke dalam file batch untuk mengatur ulang Edge (yang telah memberikan beberapa masalah dari waktu ke waktu). File batch kemudian dijalankan di tingkat Administrator. Harap perhatikan tiga kutipan di baris powershell. Contoh ini dapat mengklarifikasi hal-hal bagi mereka yang mencoba menjalankan perintah PowerShell dari baris perintah "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}"

Perhatikan kutipan "rangkap tiga" di baris Powershell. Baris itu omong-omong adalah satu baris dengan "Untuk Setiap" dan "-Pendaftar" yang dibungkus kata dalam kotak komentar ini. Itu harus menjadi satu baris meskipun dalam file batch (atau pada baris perintah jika diketik secara manual ke dalam suatu cmdsesi).

Yang penting adalah bahwa setelah kata "PowerShell" koma terbalik (") memulai dan mengakhiri perintah dan setiap koma terbalik internal yang sudah ada dalam perintah powershell yang sedang berlalu dikonversi menjadi tanda kutip" tiga "( """)

Chris Raisin
sumber