2

次のように、PowerShellから実行できるPowerShellスクリプトを作成しました。

PS C:> S:\MyScript.ps1 -a "select thing from table where name like 'name'"

共有ドライブ(S :)に保存しましたが、PowerShellまたはcmd.exeのいずれかから次の形式でPowerShellスクリプトを実行できません。

PS C:> powershell S:\MyScript.ps1 -a "select thing from table where name like 'name'"
C:\> powershell S:\MyScript.ps1 -a "select thing from table where name like 'name'"

また、executionpolicyをバイパスして実行しようとしました。

C:\> powershell -executionpolicy bypass -command S:\MyScript.ps1 -a "select thing from table where name like 'name'"

また、(上記のすべての形式で)完全なUNCパスを使用して実行しようとしました。

C:\> powershell \\MyServer\path\to\MyScript.ps1 -a "select thing from table where name like 'name'"

出力を表示する唯一の形式は、文字列を渡す必要のないパラメーターを使用する場合です。

C:\> powershell S:\MyScript.ps1 -z

thing
-----
thing1
thing2
thing3

なぜこれなのか誰か知っていますか?cmd.exeからスクリプトに文字列を渡す方法はありますか?

4

2 に答える 2

4

-Fileまた、powershell.exe には、.exeよりもファイルに適したパラメーターがあることに注意してください-command。ニックが言ったように、スクリプトパラメーターは文字列にグループ化する必要があるため、スクリプトパラメーターについてはわかりません。ニックスのソリューションを試してみて、それがうまくいかない場合は、-File代わりにパラメータを試してください-command

于 2013-01-18T22:09:02.420 に答える
2

次のように実行してみてください。

powershell -executionpolicy bypass -command {S:\MyScript.ps1 -a "select thing from table where name like 'name'"}

cmdが知っているのは、実行するコマンドとしてすべて を取り囲むことによって、S:\MyScript.ps1何をすべきかわからないコマンドを送信したことだけです。それでも問題が発生する場合は、次のことを試してください。-a "select thing from table where name like 'name'"{ }

powershell -executionpolicy bypass -command " &{S:\MyScript.ps1 -a "select thing from table where name like 'name'"}"
于 2013-01-18T21:39:41.230 に答える