ユーザー通知を提供するPowershellスクリプトを設定しています。この通知は本質的に合法であり、時々更新/変更される可能性があります。また、通知を受け取った人に依存するいくつかの「空白を埋める」変数があります。使用時に評価される文字列の変数
私は、必要に応じてファイルを見つけ、実際にスクリプトを開くことなく更新することができ
$body = "By accessing this system, you agree that your name ($currentUserName) and IP address ($currentUserIPAddr) will be recorded and stored for up to ($currentUserRetentionPeriod)."
...使用するコピー(テキスト)を含有していた二PowerShellのファイルを持っていると思ったので、何かのように編集する行、および潜在的に他の項目を混乱させる/難しいだけです。しかし、私は一回の実行で数千人のユーザーをループするので、すべての$ currentUser ...変数は頻繁に再利用されます。 $ bodyは変数を直ちに取得しようとし、呼び出されるたびに変数の内容を評価するのではなく、静的な文字列として機能するので、これは問題を引き起こします。
$ bodyを1回だけ定義する(つまりループ内ではない)巧妙な方法はありますか?それでも内部変数の再定義は可能ですか?また、複数の部分に分割するのではなく、$ part1 + $ var1 + part2 + var2 .... n + 1回になりました。あなたは、変数を必要なとき
Aで変数を定義しますパラメータ(基本的には関数)を持つスクリプトブロックを作成し、 'それを起動します。 {param($ user)$ var = "$ user"} -user 'thisuser'' – TheIncorrigible1
これはスクリプトパラメータを持つ1つの目的ではありませんか?それとも私はその質問を理解できないのですか? –
@Bill_Stewartパラメータを構成する変数は、スクリプト自体の実行中に取得されます。現時点では、私のスクリプトはかなり短いので、スクリプトは1つの機能ですが、TheIncorrigible1の応答により、2次呼び出しの合理的な選択が検討されています。私は、これが私が参照できる私の 'コピー'変数を含むドットソースの外部ファイルを持つことができるかどうかは分かりませんが、それは一歩です。 –