1. ホーム
  2. powershell

[解決済み] スクリプト内の特定の場所にジャンプする

2022-01-31 10:16:38

質問

コマンドプロンプトの:GOTOのように、スクリプトを特定の場所にジャンプさせる方法はありますか?スクリプトが終了したときに、最初にジャンプするようにしたいのです。

$tag1 = Read-Host 'Enter tag #'

cls

sc.exe \\$tag1 start RemoteRegistry

cls

Start-Sleep -s 2

cls

systeminfo /S $tag1 | findstr /B /C:"OS Name" /C:"System Boot Time" /C:"System Up Time";


Get-EventLog system -computername $tag1 -InstanceId 2147489657 -Newest 10 | ft EventID,TimeWritten,MachineName -AutoSize

Pause

解決方法は?

あなたのスクリプトを使った例です。

$GetInfo = {
  $tag1 = Read-Host 'Enter tag # or Q to quit'
  if ($tag1 -eq 'Q'){Return}
  cls
  sc.exe \\$tag1 start RemoteRegistry
  cls
  Start-Sleep -s 2
  cls
  systeminfo /S $tag1 | findstr /B /C:"OS Name" /C:"System Boot Time" /C:"System Up Time"
  Get-EventLog system -computername $tag1 -InstanceId 2147489657 -Newest 10 |
    ft EventID,TimeWritten,MachineName -AutoSize
  .$GetInfo
 }

&$GetInfo

スクリプトブロック内では、&の代わりに.を使用し、コールスタックを歩かないようにします。

スクリプトブロックにコードを記述し、スクリプト内の任意の場所から後で呼び出すこと(GoToのエミュレーション)は、機能的には関数の使用と同じであり、このように使用されるスクリプトブロックは「匿名関数」と呼ばれることがあります。