80

タイトルを参照してください。

スクリプトの先頭に必要なパラメーターを指定しました。

param ($G_ARCHIVE = $(throw "Need file to upload!"),
       $G_LOGFILE = $(throw "Need logfile!"))

Powershell ISE でスクリプトをデバッグしたい場合: これらのパラメーターを入力するにはどうすればよいですか?

4

5 に答える 5

86

コマンド ペインを使用します。ISE エディターでスクリプト ファイルを開き、ブレークポイント (F9) を設定します。次に、コマンド ペインで、必要なパラメーターを指定してこのスクリプトを呼び出すコマンドを入力します。ISE でこれを行う別の (組み込みの) 方法はないと思います。

于 2011-01-14T10:49:50.857 に答える
31
  1. Windows Powershell ISE でスクリプト (myscript.ps1) を開きます。
  2. 検査 (デバッグ) する変数で を押しF9ます。たとえば、以下のサンプルの 2 行目では、$outputText 変数が割り当てられています。
  3. シェル ウィンドウで、スクリプトの相対パスとパラメーター値を指定します。例: .\myscript.ps1 "my value"
  4. Enter キーを押します ( を押す必要はありませんF5) 。
  5. 黄色で強調表示されたデバッグ ブレークポイントを確認できます。目的の変数にカーソルを置き、現在の値を調べます。

ISE およびコマンド パラメーターを使用した PowerShell のデバッグを示すサンプル

于 2014-09-25T06:47:24.630 に答える
17

別の方法があります。(v3 以降) 存在する自動変数を使用して、$PSDefaultParameterValuesコマンドレットと高度な関数に新しい既定の引数を提供できます (通常の関数では機能しません)。ただし、ISE でデバッグする場合でも、スクリプトに対しては機能します。高度な機能を宣言する[CmdletBinding()]か、そうする必要があります。[Parameter()]

あなたの例では、

[CmdletBinding()]
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))

ISE プロンプトで次のように実行します。

$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt")
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")

実行時に自動実行されるスクリプト ブロックにパラメーター値を設定することもできます。

$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
  "Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}

変数はハッシュテーブルであり、すべての標準構文が適用されますが、キーにはスクリプト (または高度な関数またはコマンドレット) の名前の後にコロンとパラメーター名が続く必要があります。複数のスクリプトまたはコマンドのデフォルトと、それぞれの複数のパラメーターを設定できます (各パラメーターは新しいテーブル エントリです)。

このようにすることで、ヒットF5するだけでスクリプトを通常どおり実行できます。パラメータは変数から取得されるため、何も入力する必要はありません。

コマンドでパラメーター$PSDefaultParameterValuesを指定しない限り、Get-History で最後の 10 エントリのみを取得するなど、他のユース ケースとしてカスタマイズが考えられます。エントリは現在のセッションでのみ保持されるため、プロファイル-Countにカスタマイズを追加する必要があります。プロンプトで入力して詳細を読むか、 TechNetで同じ情報を表示できます。Get-Help about_Parameters_Default_Values

于 2015-09-22T17:55:19.120 に答える