【问题标题】:powershell parameters command line menupowershell 参数命令行菜单
【发布时间】:2018-11-20 04:50:00
【问题描述】:

我希望创建一个脚本,该脚本接受来自命令行的输入并根据第一个值确定提供的下一个参数。

例如确定您是为密码更改操作执行单次运行还是批量运行:

./script.ps1 -singleMODE -UserName -Password

./script.ps1 -batchMODE -文件名

我在学习 Powershell 时感到困惑的是这是什么?我查看了参数并可以从命令行将它们读入变量......但是我想要的上面有一些逻辑,我有点迷失了。有人可以帮我推一下这叫什么……然后我可以继续我的谷歌搜索! :)

我在想我以某种方式结合了参数和函数,所以它轻弹到不同的块......但我在猜测

任何帮助表示赞赏! :)

干杯

【问题讨论】:

标签: powershell powershell-3.0


【解决方案1】:

你需要的是参数集

这是一个带有函数的演示,但它与脚本一样好用(只需将 param 块放在顶部。)

function Demo {
    param(
        [Parameter(ParameterSetName='Funk')][switch]$Funk,
        [Parameter(ParameterSetName='Rock')][switch]$Rock,
        [Parameter(ParameterSetName='Funk')][string]$WriteFunk,
        [Parameter(ParameterSetName='Rock')][string]$WriteRock
    )
    if($Funk){
        foreach ($C in $WriteFunk.ToCharArray()){
            $N = 0..15 | Get-Random
            Write-Host $C -ForegroundColor $N -BackgroundColor $(15-$N) -NoNewline
        }
        Write-Host ''
    }
    if($Rock){
        Write-Host $WriteRock -ForegroundColor Gray -BackgroundColor DarkGray
    }
}

Demo -Funk -WriteFunk "Melt your brain"
Demo -Rock -WriteRock "Riders on the storm"

【讨论】:

  • 谢谢 - 太棒了!代码示例让我笑了!!! :)....实际上,如果我尝试在函数之外使用该代码 sn-p...我会得到一个不明确的参数集错误。在功能内它是完美的
  • 那是因为我在写到一半时从金属切换到摇滚,从迪斯科切换到放克,忘记切换所有变量,现在已经修复了
  • 谢谢!!!!我已经能够成功地适应它......无论如何到目前为止。干杯
  • 没问题,还请注意,您不需要将第一个参数用作专用开关,它足够聪明,可以通过使用的变量知道您在哪个集合中。我建议调查 $PSCmdlet.ParameterSetName
猜你喜欢
  • 2013-03-24
  • 2019-08-05
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2012-01-21
相关资源
最近更新 更多