比較的大きな csv を解析するスクリプトを実行しています。ただし、実行するマシンに応じて、さまざまなものを検索します。
私はpowershellにかなり慣れていないので、これを行う最も効率的な方法が何であるかわかりません。すべてのマシンで同じスクリプトを呼び出せるようにしたいので、すべてを 1 つのファイルに保持するのが最善です。
おそらく $env:computername を実行するマシンの名前に一致させるケースステートメントを考えていましたか?
比較的大きな csv を解析するスクリプトを実行しています。ただし、実行するマシンに応じて、さまざまなものを検索します。
私はpowershellにかなり慣れていないので、これを行う最も効率的な方法が何であるかわかりません。すべてのマシンで同じスクリプトを呼び出せるようにしたいので、すべてを 1 つのファイルに保持するのが最善です。
おそらく $env:computername を実行するマシンの名前に一致させるケースステートメントを考えていましたか?
ロジックが常に .csv ファイルを解析し、異なるものが一致するパターンである場合、 後でスクリプトのロジックで使用するすべての変数を設定するために、ホスト名に基づいてswitch ステートメントを使用します。また、ホスト名に基づいてロジックを変更する必要がある場合は 、スクリプトのロジックで後で呼び出すいくつかのスクリプト ブロックを switch ステートメントに設定します。
例:
$a = hostname
switch ($a)
{
"WS001" { $sb = {dir} ; $txt = "Computer name: " + $a }
"WS003" { $sb = { get-process } ; $txt = "Computer name: " + $a }
default { $sb = $null ; $txt = "This Computer can't run this script"}
}
if ($sb) { &$sb }
$txt
@Christianによる回答への小さな追加。
各ホスト名のスクリプトブロックの最後に、breakステートメントの追加を検討することをお勧めします。そうすれば、考えられるすべてのホストに対して$ aをテストする必要がなくなります。ホストを見つけてホスト固有の処理を実行すると、Breakステートメントがスイッチのスクリプトブロックからジャンプします。
したがって、次のようになります。
$a = hostname
switch ($a)
{
"WS001" { $sb = {dir} ; $txt = "Computer name: " + $a ; break }
"WS003" { $sb = { get-process } ; $txt = "Computer name: " + $a; break }
default { $sb = $null ; $txt = "This Computer can't run this script"}
}
...