Powershell中Finally语句用法示例

 更新时间:2015年03月25日 09:02:15   投稿:junjie  
这篇文章主要介绍了Powershell中Finally语句用法示例,本文用一个播放音乐的脚本为例子,使用Finally语句在异常结束操作时执行清理操作,需要的朋友可以参考下

在之前的小技巧中,我们曾经引入过,一个有声的进度条。在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()来不及执行,提示声音仍旧在余音绕梁,三日不绝。

解决办法,将最后一句收尾工作的$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()
}

相关文章

  • 探索PowerShell(十四) 使用WMI对象的方法

    探索PowerShell(十四) 使用WMI对象的方法

    上一篇文章中介绍了WMI的基础内容,主要讲了WMI的属性值的查看,文中还提到,WMI不仅具有属性,还具有方法。这一节就来具体讲一下如何调用WMI对象方法
    2012-12-12
  • Windows Powershell方法(对象能做什么)

    Windows Powershell方法(对象能做什么)

    方法定义了一个对象可以做什么事情。当你把一个对象输出在控制台时,它的属性可能会被转换成可视的文本。但是它的方法却不可见。
    2014-09-09
  • PowerShell脚本实现检测网络内主机类型

    PowerShell脚本实现检测网络内主机类型

    这篇文章主要介绍了PowerShell脚本实现检测网络内主机类型,本文脚本基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备,需要的朋友可以参考下
    2014-12-12
  • Shell 中常用 Date 日期的计算

    Shell 中常用 Date 日期的计算

    这篇文章主要为大家介绍了Shell中常用Date日期的计算详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • PowerShell脚本清理指定天数前的临时文件夹实现代码

    PowerShell脚本清理指定天数前的临时文件夹实现代码

    这篇文章主要介绍了PowerShell脚本清理指定天数前的临时文件夹实现代码,指定天数可以任意修改数字实现,需要的朋友可以参考下
    2014-08-08
  • PowerShell Continue语句使用示例

    PowerShell Continue语句使用示例

    这篇文章主要介绍了PowerShell Continue语句使用示例,本文直接给出示例代码,需要的朋友可以参考下
    2015-06-06
  • PowerShell添加本地账户脚本分享

    PowerShell添加本地账户脚本分享

    这篇文章主要介绍了PowerShell添加本地账户脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • 探索PowerShell (四) PowerShell的对象、格式与参数

    探索PowerShell (四) PowerShell的对象、格式与参数

    本节将要给大家介绍一下PowerShell下的对象,基本格式以及参数。依然属于PowerShell的基础
    2012-12-12
  • Windows Powershell Foreach 循环

    Windows Powershell Foreach 循环

    Foreach-object 为cmdlet命令,使用在管道中,对管道结果逐个处理,foreach为遍历集合的关键字。
    2014-10-10
  • PowerShell小技巧之执行SOAP请求

    PowerShell小技巧之执行SOAP请求

    SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop),SOAP编码规则(encoding rules),SOAP RPC表示(RPC representation,SOAP绑定(binding)
    2014-10-10

最新评论