esegui il comando powershell da cmd


30

come posso eseguire questo comando da cmd:

powershell.exe "(get-process |? {$ _. Descrizione -eq" Sysinter Process Explorer "}) | selezionare nome processo | out-file $ env: APPDATA \ example.txt"

ottengo ancora questo errore:

È necessario fornire un'espressione di valore sul lato destro dell'operato '-eq'. Alla riga: 1 carattere: 37 + (get-process |? {$ _. Descrizione -eq <<<< Sysinternals Process Explorer}) | seleziona nome processo | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValueExpression


3
Il problema potrebbe essere l'insieme interno di virgolette. Prova a rimuoverli o, se devono essere usati, prova a usare questo ragazzo: 'aka l'apostrofo sul posto.
DeathByTensors

2
Attenzione : non utilizzare oscenità nei tuoi post. L'ho rimosso per te. Tieni presente che altri utenti potrebbero aver contrassegnato il tuo post come "maleducato o offensivo" con conseguente perdita o sospensione del rappresentante. Ti preghiamo di leggere Be Nice : "Evita termini volgari e qualsiasi cosa di sessualmente suggestiva"
DavidPostill

Risposte:


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

fondamentalmente hai un comando powershell e incollalo tra queste virgolette per chiamarlo da CMD

powershell -command " #PasteCodeHere "

all'interno di queste citazioni devi lavorare 'altrimenti interromperà il tuo parametro di comando.

Modifica: Informazioni aggiuntive:

abbastanza spesso incontrerai questo: powershell -command "& 'somestuff'"

il &viene utilizzato per chiamare un file. quando si utilizza solo un comando non &è essenziale, quando si desidera chiamare uno script, è necessario utilizzarlo.

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

Puoi anche usare powershell -file C:\file.ps1per chiamare uno script


sei l'uomo migliore <3 funziona
Qassam Mahmoud,

3
Se il comando da eseguire ha virgolette, devono essere raddoppiate. Esempio: powershell -command "dir" "c: \ Programmi" ""
Myobis

1
@myobis o puoi semplicemente usare virgolette singolepowershell -command " dir 'C:\Program Files' "
SimonS

1
@myobis In realtà, raddoppiare le virgolette non funziona (in Windows 10 cmd). Ma usando una barra inversa Escaping ha fatto:powershell -command "dir \"c:\Program Files\" "
wisbucky

0

Ho inserito i seguenti comandi in un file batch per ripristinare Edge (che di volta in volta ha dato alcuni problemi). Il file batch è stato quindi eseguito a livello di amministratore. Nota le virgolette triple nella riga di PowerShell. Questo esempio può chiarire le cose per coloro che cercano di eseguire un comando PowerShell da una riga di comando "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}"

Nota le virgolette "triple" nella riga Powershell. A proposito, quella riga è una riga singola con "For Each" e "-Register" che sono racchiusi in una finestra di commento. Dovrebbe essere una singola riga nel file batch (o nella riga di comando se digitato manualmente in una cmdsessione).

L'importante è che dopo la parola "PowerShell" invertite virgole (") iniziano e finiscono il comando e tutte le virgolette interne già invertite nel comando powershell che vengono passate vengono convertite in virgolette" triple "( """)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.