Windows PowerShell ISEでPowerShellスクリプトを作成しています。スクリプトでsometingを変更してスクリプトを実行すると、最後に保存されたバージョンのスクリプトは実行されず、古いものが実行されます。 2回目にスクリプトを実行した場合のみ、現在のバージョンが使用されます。スクリプトの最新バージョンを常に実行するにはどうすればよいですか?Windows PowerShell ISE(旧バージョン)
6
A
答えて
1
編集を行った後、ドットソーシングでスクリプトを再度ソースする必要があります。あなたは、以下のコマンドを実行して、コンソールに、あなたは現在のディレクトリにするMyScript.ps1という名前のファイルを持っていると仮定すると:
. .\MyScript.ps1
スクリプトで特定の機能を呼び出したい場合は、あなただけで行うことができます。
. .\MyScript.ps1
MyFunction
1
これは非常に古い質問ですが、私は同じ問題を偶然見つけたと思います。私の場合は、呼び出した後に関数を定義しました。これはうまくいくようですが、 "myfunc"には以前の呼び出しの値がまだあるためです。 "Hello、World!"を変更すると、新しい値が2回目の試行でのみ有効になります。
Invoke-Command -ScriptBlock ${function:myfunc}
function myfunc() {
Write-Host "Hello, World!"
}
あなたはそれを呼び出そうと前に、単に機能を定義し、問題を解決するには。
function myfunc() {
Write-Host "Hello, World!"
}
Invoke-Command -ScriptBlock ${function:myfunc}
0
古いファイルのISE "キャッシング" との私の経験:
ISEの挙動は、PSモジュール(.psm1)と簡単なPSスクリプト(PS1)のために異なっています。私はPS & ISE with Win10Proを使用しています。
A)のモジュールと 私の経験(PSM1)
- すでに適切なモジュールに配置されたロードモジュールファイル "hello.psm1" ディレクトリ 「C:\ Users \ユーザーMYUSERNAME \ドキュメント\ WindowsPowerShell \モジュール\こんにちは」 によってISE
- によって機能を実行する 『ファイル、例えばを変更
- 』(あなたがで モジュールを実行しないことがあり、 『スクリプトの実行』を参照)を実行し、選択 関数の出力 'Write-Host "Hello World!"'を 'Write-Host "Hello"'に変換し、 ファイルを保存します。
- "Run selection"で関数を実行すると、古い出力(例えば、 "0")を持つ の古い関数が実行されます。 "こんにちは世界!"。 「選択範囲を実行」コマンドを繰り返す場合も同様です。
- ISEを終了してもう一度ロードするだけで、新しい機能が "Run Selection"によって実行されます。
B) スクリプト(.PS1)での私の経験。
- 「実行選択」を実行すると、モジュールと同じ動作になります。
- "Run Script"を一度実行して関数を呼び出すと、関数の現在のバージョンが実行されます。もちろん、定義された「後」のファイル内の関数(行番号100など)を(たとえば10〜20行目で)呼び出します。これにより、キャッシングはありません。
- 特に「Run Script」を実行すると、実行されたコードが関数を呼び出していない間に「Run Selection」で関数を実行すると、関数の現在のバージョンが実行されます。
C) は、ここに私の問題を回避するには、モジュール開発をより快適にすることです:
- 簡単なスクリプトは、「スクリプトの実行」で実行することができます。
- モジュール(.PSM1)を開発したい場合は、開発フェーズで簡単なスクリプト(.PS1)という名前を付けます。私は適切なモジュールフォルダ、例えば に既にファイル(例えば "hello.ps1")を配置します。モジュール "Hello"の場合、 "C:¥Users¥MyUserName¥Documents¥WindowsPowerShell¥Modules¥Hello"です。もちろんこれでPowerShellコンソールから関数をモジュール関数として実行することはできません。 ISEを使用してテスト用の関数を呼び出すだけです。
- モジュールはスクリプトとして実行されないため、ファイル内に実行可能なコードはなく、関数(AFAIK)だけです。だから私はスクリプト上で "Run Script"を安全に実行するかもしれません。
ISE開発でモジュールファイルを変更した場合、「Run Selection」で関数を実行する前に、常に「Run Script」を実行します。
これにより、私は常に現在のバージョンの関数を実行します。
私の問題は少し異なりましたが、この質問と回答は解決策を見つけるのに非常に役立ちました。 ISEの「キャッシング」とそれに役立つ答えについては、このような質問を見つけるのは難しいです。
こんにちは ロルフ
関連する問題