PowerShell还拥有两种主要的错误类型:终止性错误和非终止性错误。终止性错误将导致脚本停止,除非在 try-catch 块中捕获,而非终止性错误则不会,除非你指定了 -ErrorAction Stop。这种区分至关重要,因为它赋予了对错误处理的细粒度控制,决定一个错误是否真的需要停止整个脚本,或者可以简单地记录并忽略。
try-catch
-ErrorAction Stop
当你在PowerShell战壕中时,Write-Host是快速且简陋的,但它只是将文字输出到控制台,不适合保留记录。Out-File为你提供了一种简单的将文本写入文件的方法,但对于真正的精华部分,你将希望使用Start-Transcript和Stop-Transcript,它们记录一切——输入、输出,全都包括。
Write-Host
Out-File
Start-Transcript
Stop-Transcript
如何操作: PowerShell中的函数,像大多数语言中的函数一样,早已不是新鲜事。我们自Fortran时代起就开始将代码分门别类。其理念是’不要重复发明轮子’。有替代品吗?当然,脚本或cmdlets。但它们缺乏函数在脚本内的整洁性和上下文敏感性。 实现?函数可以像我们的示例那样基础,也可以像具有作用域、管道输入等的高级函数那样复杂。它们通过具有属性的参数模仿cmdlets,比如[Parameter(Mandatory=$true)]。这只是PowerShell灵活性的一个例证。
高级函数
[Parameter(Mandatory=$true)]
如何操作: PowerShell内置的并没有专门的重构工具,但你仍然可以清理你的代码,以提高可读性和性能。考虑一个做得太多的函数,以及我们如何为了清晰而重构它:.