在 PowerShell (PS) 中,按照官方语法中定义的顺序使用 cmdlet 参数是否重要?
我正在将-cc
参数添加到现有脚本中的 send-mailMessage 中。我-cc
之后立即添加-To
,它工作得很好,所以我倾向于独自离开。但是 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>]
所以我认为最佳实践是运行这样的命令(在主题、正文、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
示例所示。