简体   繁体   English

在 Powershell 中禁用位置参数绑定

[英]Disable Positional Parameter Binding in Powershell

I want parameters ONLY through alias:我只需要通过别名的参数:

script.ps1 -d site1 -c eac34b2d script.ps1 -d site1 -c eac34b2d

This shouldnt be allowed:这不应该被允许:

script.ps1 site1 eac34b2d script.ps1 site1 eac34b2d

Param(
    [parameter(Mandatory=$true)]
    [alias("d")]
    $DocRoot,
    [alias("c")]
    $Commit
)

Basically you want to disable positional parameter binding.基本上你想禁用位置参数绑定。 I wrote about a built-in way in Powershell 3.0: use [CmdletBinding(PositionalBinding=$false)] .我写了 Powershell 3.0 中的一种内置方式:使用[CmdletBinding(PositionalBinding=$false)]

http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/09/19/how-to-disable-positional-parameter-binding-in-powershell.aspx http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/09/19/how-to-disable-positional-parameter-binding-in-powershell.aspx

A workaround for v2 is available here:此处提供了 v2 的解决方法:

http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/abbc587f-cd7e-4c8d-879f-355339d9d6b7/ http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/abbc587f-cd7e-4c8d-879f-355339d9d6b7/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM