2012-04-19 25 views
4

我是用PowerShell自学的,现在我已经写了几个脚本,其中一些脚本非常强大。尽管如此,我担心我可能没有按照预期的方式使用PowerShell。这里是我的两个主要关注点:PowerShell最佳实践:处理像高级批处理文件这样的PowerShell脚本不好吗?

  1. 从我读过,PowerShell脚本应该以这样的方式,他们可以通过管道输送到书面,也使他们能够管它们的输出成别的东西。但是我编写脚本的方式是完全独立,并通过Write-Host将所有内容输出给用户。

  2. 我读过的另一件事是当出现错误(例如,您尝试读取文件但没有权限)时,应该使用Write-Error而不是Write-Host。不过,我不这样做。我只是捕获简单的英文错误消息并将其输出Write-Host,因此对于不了解PowerShell或编码而不知道如何运行脚本的人员来说,它更便于用户使用。

这些事情在PowerShell社区中是否被大量地忽视了?如果我向高级PowerShell编码器展示了其中一个功能强大,评论详尽且易于阅读的脚本,他会嘲笑它并将其称为垃圾吗?

我的一些脚本可能对其他人有用,但由于担心我的风格不正确,所以我毫不犹豫地向任何人展示代码。任何帮助,将不胜感激。谢谢!

+0

是的,如果您(超过)使用写入主机,则您在前面的权力,你剩下的只是一个壳。 – OldFart 2012-04-20 15:16:37

回答

2

我不认为它是一个脚本使用write-output而不是write-host,以便输出可以通过管道连接到其他脚本等Cmdlet和可能的功能可以期望这样做,但不是脚本。如果您必须向用户显示有关脚本正在执行的操作的信息,则最好使用Write-Host。请注意,如果要将脚本的输出记录到日志文件并在屏幕上显示给用户,则使用Write-Output可能会更好。这样做时,您使用Write-Host不能容易/有效地完成。

Write-Error添加一些额外的信息,IMO是没有必要的。我很少使用Write-Error。我使用Write-Host -fore red message来指示脚本中的错误。这使它很好,很简单。

但是,当然,我们不能像总是使用写输出或总是使用写主机等语句,这将取决于情况以及如何使用脚本。

2

“如果我发现我的强大,完善的注释,易于阅读剧本之一”

IMO最佳做法不能跟着大家所有的时间。我认为只要您的代码功能强大,易于阅读和修改(带有注释),并且人们发现它很有用,那么您不必担心遵循最佳实践,但最好在代码中实施最佳实践慢。

在SharePoint中,最佳做法是向日志和事件查看器写入错误,但在我的一些项目中,我们会将错误详细信息通过电子邮件发送到特定收件箱,以便立即检查和纠正问题。我们并没有遵循这里的最佳做法,但我们发现这是有用的和有效的。

我们有许多PowerShell脚本,我们的团队几乎每天都使用它来在SharePoint服务器中执行快速任务。他们是我们写的,我们也不遵循所有的最佳做法:)