Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell中是否有用于传递参数的动态变量?_Powershell_Arguments_Parameter Passing - Fatal编程技术网

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

powershell中是否有用于传递参数的动态变量?,powershell,arguments,parameter-passing,Powershell,Arguments,Parameter Passing,在批处理中,传递的参数可与%1一起使用,并可继续计数。 假设我有以下batch.bat脚本: @ echo off echo %1 pause>nul 如果我从cmd调用它,比如:call batch.bat hello,它将在控制台中输出hello ps中有没有做同样事情的变量 编辑 我找到了毛茸茸的翅膀,但看起来有点不自然 $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.

在批处理中,传递的参数可与%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有一个$args,它存储传递给脚本的所有参数,除非为脚本定义了参数。第一个参数的索引$args[0],第二个参数的索引$args[1]可以访问各个参数,以此类推

但是,通常建议控制脚本应该接受哪些参数,例如

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

    [Parameter(Mandatory=$false)]
    [integer]$Second = 42
)
这有许多优点,包括但不限于:

参数被自动解析,值存储在相应的变量中 脚本自动提示输入必需的参数 如果传递了不正确的参数,脚本将抛出错误 可以为可选参数定义默认值 您可以让脚本或函数接受管道输入 你可以 您可以使用来记录参数及其用法 PowerShell有一个$args,用于存储传递给脚本的所有参数,除非为脚本定义了参数。第一个参数的索引$args[0],第二个参数的索引$args[1]可以访问各个参数,以此类推

但是,通常建议控制脚本应该接受哪些参数,例如

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

    [Parameter(Mandatory=$false)]
    [integer]$Second = 42
)
这有许多优点,包括但不限于:

参数被自动解析,值存储在相应的变量中 脚本自动提示输入必需的参数 如果传递了不正确的参数,脚本将抛出错误 可以为可选参数定义默认值 您可以让脚本或函数接受管道输入 你可以 您可以使用来记录参数及其用法
$Args数组您需要示例$Args[0]非常感谢。我已经试过了,但现在我查找了$args,发现$args数组您需要示例$args[0]非常感谢。我已经尝试过了,但现在我查找了$args并发现了一些其他信息:在没有[CmdletBinding]和/或[Parameter]属性的简单函数/脚本中,$args仍然被定义,并且包含未绑定到已声明参数(如果有)的位置参数;高级函数/脚本基本上只允许传递绑定到已声明参数的参数。其他一些信息:在简单函数/脚本中,没有[CmdletBinding]和/或[Parameter]属性$args的函数/脚本仍然被定义,并且包含未绑定到已声明参数的位置参数(如果有);高级函数/脚本基本上只允许传递绑定到已声明参数的参数。