gpt4 book ai didi

powershell - 在Powershell中是否有用于传递参数的动态变量?

转载 作者:行者123 更新时间:2023-12-03 00:59:01 25 4
gpt4 key购买 nike

在批处理中,可以将传递的参数与%1和后续计数一起使用。
可以说我有以下“batch.bat”脚本:

@ echo off
echo %1
pause>nul

如果我从cmd像 call batch.bat hello这样调用它,它将在控制台中输出“hello”。

ps中是否有任何变量可以执行相同的操作?

编辑

我发现了这种蠢事,但这似乎是不自然的。
$CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
Exit
}

也许还有更优雅的东西吗?

最佳答案

PowerShell有一个automatic variable $args,用于存储传递给脚本的所有参数(除非为脚本定义了参数)。可以通过索引访问各个参数(第一个参数为$args[0],第二个参数为$args[1],等等)。

但是,通常建议define parameters控制脚本应接受的参数,例如

[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$First,

[Parameter(Mandatory=$false)]
[integer]$Second = 42
)

这样做有很多优点,包括(但不限于):
  • 参数将自动解析,并将值存储在各自的变量
  • 脚本自动提示输入强制性参数
  • 如果传递了不正确的参数,则
  • 脚本会引发错误
  • 您可以为可选参数
  • 定义默认值
  • 您可以让您的脚本或函数接受管道输入
  • 您可以validate parameter values
  • 您可以使用comment-based help记录参数及其用法
  • 关于powershell - 在Powershell中是否有用于传递参数的动态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58880276/

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