繁体   English   中英

从 Windows 中获取参数在 powershell 中运行

[英]Taking arguments from windows run in powershell

我试图在调用 powershell 脚本时从运行的 Windows 传递一些参数。 看起来像这样: myscript "Some parameters", "some other" 这甚至可能吗? 如果是这样,我如何将参数从它带到 powershell 脚本并使用它们? 到目前为止,我知道如何使用参数的“ValueFromPipelineByPropertyName”选项通过 cmd 请求用户输入参数,但这不是我想要的。 提前致谢。

PowerShell 本质上提供了两种处理脚本参数的方法:

  • 自动变量$args包含所有参数的列表,然后可以通过索引访问:

    脚本:

     "1st argument: " + $args[0] "2nd argument: " + $args[1] "3rd argument: " + $args[2]

    调用:

     powershell.exe -File .\\script.ps1 "foo" "bar"

    输出:

    \n第一个参数:foo\n第二个参数:酒吧\n第三个论点: \n
  • 脚本开头的Param()部分获取分配给各个变量的参数值:

    脚本:

     Param( [Parameter()]$p1 = '', [Parameter()]$p2 = '', [Parameter()]$p3 = '' ) "1st argument: " + $p1 "2nd argument: " + $p2 "3rd argument: " + $p3

    调用:

     powershell.exe -File .\\script.ps1 "foo" "bar"

    输出:

    \n第一个参数:foo\n第二个参数:酒吧\n第三个论点: \n

但是,如果您希望能够在不显式运行powershell.exe命令的情况下调用 PowerShell 脚本,则需要更改注册表中Microsoft.PowerShellScript.1类型的默认操作。 您可能还需要调整系统上的执行策略 ( Set-ExecutionPolicy RemoteSigned -Force )。

通常,您只会将$args用于非常简单的场景(以明确定义的顺序的少数参数)。 完整的参数定义使您可以更好地控制参数处理(您可以将参数设为可选或强制性、定义参数类型、定义默认值、进行验证等)。

我几乎不明白你的问题。 这是尝试更接近你想要的..

您尝试通过 Windows CMD 调用 powershell 脚本,如下所示:

powershell.exe myscript.ps1 parameter1 parameter2 anotherparameter

以上是如何获取未命名参数。 您还可以查看命名参数,如下所示:

Powershell.exe myscript.ps1 -param1 "Test" -param2 "Test2" -anotherparameter "Test3"

您可以在 CMD 中使用“Set”接受来自用户的输入,如下所示:

set /p id="Enter ID: "

在 powershell 中,您将使用 Read-host,如下所示:

$answer = Read-Host "Please input the answer to this question"

在脚本的顶部声明要传递的参数,这是我的 build.ps1 中的示例

param (
    [string] $searchTerm,
    [ValidateSet('Remote', 'Local')][string] $sourceType = 'local',
    [switch] $force
)

Write-Host $searchTerm

然后,您可以按顺序传递参数:

build.ps1 '1234' local -force

或使用命名参数

build.ps1 -searchTerm '1234' -sourceType local -force

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM