【发布时间】:2018-11-28 19:50:50
【问题描述】:
我有这个功能:
function AlwaysRunAtLogon {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[System.String]$NomTache,
[Parameter(Mandatory = $true)]
[System.String]$Script,
[switch]$retrait
)
...
}
用例 #1 是:
AlwaysRunAtLogon -NomTache AnyName C:\temp\script.ps1
这将运行代码来添加一些东西。这工作正常。我现在想在我的函数中添加一个 SWITCH 参数,以便它可以根据第一个参数 (NomTache) 的值删除某些内容
所以用例 #2 是:
AlwaysRunAtLogon -NomTache AnyName -Retrait
现在问题来了。在案例 #1 中,我想保持 $Script 强制性,以便用户必须提供脚本文件。但是,在情况 #2 中,$Script 现在是可选的,因为删除操作只需要第一个参数即可工作(NomTache)
如何调整此功能,以便同时使用案例 1 和 2?某处可能存在逻辑问题。我是函数新手,所以感谢您的帮助。我愿意接受任何重新设计。
我是否最好执行另一个功能,例如“RemoveAlwaysRunAtLogon”并像这样运行它? :
RemoveAlwaysRunAtLogon -NomTache AnyName
【问题讨论】:
标签: function powershell parameters switch-statement