Arrays Powershell脚本是否具有可发现的默认参数值?
我已经编写了一个powershell脚本来实现简单的启动或停止以及一系列服务 以下是我当前的脚本:Arrays Powershell脚本是否具有可发现的默认参数值?,arrays,powershell,Arrays,Powershell,我已经编写了一个powershell脚本来实现简单的启动或停止以及一系列服务 以下是我当前的脚本: param([Switch] $Stop, [Switch] $Start) $services = @( "Service1", "Service2", "Service3", "etc" ) if ($Start -eq $true) { echo "Starting services..." get-service $services | start-Service
param([Switch] $Stop, [Switch] $Start)
$services = @(
"Service1",
"Service2",
"Service3",
"etc"
)
if ($Start -eq $true) {
echo "Starting services..."
get-service $services | start-Service
}
if ($Stop -eq $true) {
echo "Stopping services..."
get-service $services | stop-Service
}
echo "Done."
该命令仅为Services-stop
或Services-start
参数-stop
或-start
是可发现的(当您点击tab键时),我很喜欢
目前,这将停止或启动阵列中的所有服务,我想做的是还可以选择停止或启动特定的服务
如果我修改参数并接受服务名称,这就很容易了
但我真正想做的是,将这些服务名称固定到数组中的服务名称,并以相同的方式进行发现,以便点击tab键将通过可用的默认值
结果可能是这样的:
服务-停止-服务:服务1
这可能吗?要将-service限制为my array中的服务?您可以使用ValidateSet属性执行此操作,例如:
param(
[Parameter()]
[Switch]
$Stop,
[Parameter()]
[Switch]
$Start,
[Parameter()]
[ValidateSet("Service1","Service2","Service3","etc")]
[string[]]
$Service
)
...
您可以这样调用制表符完成:
Services -stop -service <tab>
服务-停止-服务
我将尝试一下,我可以使用相同的数组还是必须复制该部分?(在validateset中)您可以访问validateset,但它有点混乱:$services=$MyInvocation.MyCommand.Parameters['Service'].Attributes |?{$\ TypeId.Name-eq'validateStatAttribute'}选择-ExpandProperty validValue