【发布时间】:2012-10-17 00:56:43
【问题描述】:
在 PowerShell (PS) 中,按官方语法中定义的顺序使用 cmdlet 参数是否重要?
我正在将-cc 参数添加到现有脚本中的send-mailMessage。我在-To 之后立即添加了-cc,它工作得很好,所以我倾向于独自离开。但该cmdlet的唯一参数集在帮助文本中定义如下:
Send-MailMessage [-To] <String[]> [-Subject] <String> [[-Body] <String> ] [[-SmtpServer] <String> ] -From <String> [-Attachments <String[]> ] [-Bcc <String[]> ] [-BodyAsHtml] [-Cc <String[]> ] [-Credential <PSCredential> ] [-DeliveryNotificationOption <DeliveryNotificationOptions> ] [-Encoding <Encoding> ] [-Port <Int32> ] [-Priority <MailPriority> ] [-UseSsl] [ <CommonParameters>]
所以我认为最佳做法是运行这样的命令(cc 在主题、正文、smtpserver 和 from 之后,在帮助文本之后):
send-mailmessage -to $mailTo -subject $mailSubj -body $msgbody -smtpserver smtp.domain.tld -from $mailFrom -cc $mailCC
...而不是像这样(cc 在许多其他参数之前):
send-mailmessage -to $mailTo -cc $mailCC -subject $mailSubj -body $msgbody -smtpserver smtp.domain.tld -from $mailFrom
总的来说,我对此并没有特别小心,而且这些东西都有效。因此,按照这些思路返回并调整现有的功能脚本肯定是矫枉过正(更不用说容易出错了)。但也许值得在未来的脚本中尊重参数顺序?还是不值得麻烦?你说什么?
当然,您不希望对哪个参数是默认参数做出错误的假设,然后省略参数名称;我也可以想象这种事情会因自定义函数等而变得混乱。但我的问题是关于更简单的情况,即显式命名内置 cmdlet 的参数时,如上面的send-mailMessage 示例。
【问题讨论】:
标签: powershell syntax parameters conventions