Powershell 에서 Finally 구문 용법 예제

1782 단어 PowershellFinally
이전의 작은 기교 에서 우 리 는 소리 나 는 진도 조 를 도입 한 적 이 있다.PowerShell 이 바 쁜 작업 을 하고 있 을 때 음악 을 계속 재생 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다:

# windows wav
$WAVPath = Get-ChildItem -Path $env:windir -Filter *.wav -Recurse -ErrorAction SilentlyContinue |
 Select-Object -First 1 -ExpandProperty FullName
 
 
#
 
$player = New-Object Media.SoundPlayer $WAVPath
$player.PlayLooping()
  
1..100 | ForEach-Object {
 Write-Progress -Activity 'Doing Something. Hang in' -Status $_ -PercentComplete $_
 Start-Sleep -MilliSeconds (Get-Random -Minimum 300 -Maximum 1300)
 }
$player.Stop()
스 크 립 트 가 정상적으로 실행 되 었 으 나,예 를 들 어 ctrl+C 를 사용 하여 종료 하면 스 크 립 트 실행 이 바로 끝 납 니 다.마지막 줄 의$player.stop()이 실행 되 지 않 았 습 니 다.알림 소 리 는 여전히 여음 으로 돌아 가 고 있 습 니 다.3 일 동안 끊 이지 않 습 니 다.
해결 방법,마지막 마무리 작업 의$player.stop()을 Finally 구문 에 넣 습 니 다.

 # Windows Wav
$WAVPath = Get-ChildItem -Path $env:windir -Filter *.wav -Recurse -ErrorActionSilentlyContinue |
Select-Object -First 1 -ExpandProperty FullName
 
#
 
$player = New-Object Media.SoundPlayer $WAVPath
 
try
{
 
  $player.PlayLooping()
   
  1..100 | ForEach-Object {
    Write-Progress -Activity 'Doing Something' -Status $_ -PercentComplete $_
    Start-Sleep -MilliSeconds (Get-Random -Minimum 300 -Maximum 1300)
  }
}
 
finally
{
  $player.Stop()
}

좋은 웹페이지 즐겨찾기