web-dev-qa-db-ja.com

cmdからpowershellコマンドを実行します。

どのように私はcmdからこのコマンドを実行することができます:

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

私はまだこのエラーが出ます:

-eq演算子の右側に値式を指定する必要があります。 1行に1文字:37 +(get-process |?{$ _。説明-eq <<<< Sysinternals Process Explorer})| select processname |アウトファイル$ env:APPDATA\example.txt + CategoryInfo:ParserError:(:) []、ParentContainsErrorRecordEx ception + FullyQualifiedErrorId:ExpectedValueExpression

13
Qassam Mahmoud
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を使ってスクリプトを呼び出すこともできます

21
SimonS

Edgeをリセットするために、次のコマンドをバッチファイルに配置しました(これにより、時々問題が発生していました)。その後、バッチファイルは管理者レベルで実行されました。 powershell行の三重引用符に注意してください。この例では、「cmd」コマンドラインからpowershellコマンドを実行しようとする人のために物事を明確にすることができます。

@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セッションに手動で入力した場合はコマンドライン上)でも1行にする必要があります。

重要なことは、Wordの「PowerShell」逆コンマ( ")がコマンドを開始および終了した後、渡されるpowershellコマンドに既に含まれている内部逆コンマが「トリプル」引用符(""")に変換されることです。

0
craisin