gpt4 book ai didi

powershell - 调用 powershell cmdlet 时参数顺序有多重要?

转载 作者:行者123 更新时间:2023-12-03 18:15:24 29 4
gpt4 key购买 nike

在 Powershell 中,按照官方语法中定义的顺序使用 cmdlet 参数是否重要?

我在现有脚本中向 send-mailMessage 添加 -cc 参数。我在 -To 之后立即添加了 -cc 并且它工作得很好,所以我倾向于独自离开。但是 cmdlet 的唯一参数集在帮助文本中定义如下:

Send-MailMessage [-To] [-Subject] [[-Body] ] [[-SmtpServer] ] -From [-Attachments ] [-Bcc ] [-BodyAsHtml] [-Cc ] [-Credential ] [-DeliveryNotificationOption ] [ -编码] [-端口] [-优先级] [-UseSsl] [ ]

因此,我认为最佳实践是运行这样的命令(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

总的来说,我对此并没有特别小心,而且东西很有效。因此,返回并沿着这些路线调整功能性现有脚本肯定是矫枉过正(更不用说容易出错)。但也许在 future 的脚本中尊重参数顺序是值得的?或者不值得麻烦?你说什么?

当然,您不想对哪个参数是默认参数做出错误的假设,然后省略参数名称;我也可以想象这种事情会因自定义函数等而变得困惑。但我的问题是关于更简单的情况,当显式命名现成 cmdlet 的参数时,就像上面的 send-mailMessage 示例一样。

最佳答案

如果您在调用 cmdlet 时命名参数(例如 Get-ChildItem -Path *.txt ),那么您指定它们的顺序无关紧要。一切都完全按名称指定,因此不需要提供参数的顺序来解析论据。
如果您没有命名参数(例如 Get-ChildItem *.txt ),那么这很重要。 cmdlet 作者可以指定可以/应该按特定顺序在没有名称的情况下预期某些参数。 Powershell 引擎将尽最大努力尊重这一点,并且通常它会尝试将未命名的参数与尚未分配的任何参数配对。
退房 this page有关更多技术信息的参数类型。

关于powershell - 调用 powershell cmdlet 时参数顺序有多重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com