首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PowerShell中处理命令行参数

如何在PowerShell中处理命令行参数
EN

Stack Overflow用户
提问于 2010-01-29 04:01:10
回答 1查看 796.3K关注 0票数 549

处理命令行参数的“最佳”方法是什么?

关于“最好的”方法是什么,似乎有几个答案,结果我被困在如何处理像这样简单的事情上:

代码语言:javascript
复制
script.ps1 /n name /d domain

代码语言:javascript
复制
script.ps1 /d domain /n name.

有没有能更好的处理这个问题的插件?我知道我正在重新发明轮子。

显然,我已经拥有的不是很漂亮,当然也不是“最好的”,但它是有效的。它是丑陋的。

代码语言:javascript
复制
for ( $i = 0; $i -lt $args.count; $i++ ) {
    if ($args[ $i ] -eq "/n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "/d"){ $strDomain=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-d"){ $strDomain=$args[ $i+1 ]}
}
Write-Host $strName
Write-Host $strDomain
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-29 04:13:41

你在重新发明轮子。正常的PowerShell脚本具有以-开头的参数,如script.ps1 -server http://devserver

然后在文件开头的param部分处理它们。

您还可以为参数指定默认值,如果参数不可用,则从控制台读取它们或停止脚本执行:

代码语言:javascript
复制
 param (
    [string]$server = "http://defaultserver",
    [Parameter(Mandatory=$true)][string]$username,
    [string]$password = $( Read-Host "Input password, please" )
 )

在脚本中,您可以简单地

代码语言:javascript
复制
write-output $server

因为所有参数都成为脚本作用域中可用变量。

在本例中,如果在没有$server的情况下调用脚本,则该脚本将获得默认值;如果省略-username参数,则脚本将停止;如果省略-password,则脚本将请求终端输入。

更新:您可能还想向PowerShell脚本传递一个“标志”(布尔值为真/假的参数)。例如,您的脚本可能会接受一个" force“,当不使用force时,脚本会以更谨慎的模式运行。

关键字是[switch]参数类型:

代码语言:javascript
复制
 param (
    [string]$server = "http://defaultserver",
    [string]$password = $( Read-Host "Input password, please" ),
    [switch]$force = $false
 )

在脚本中,您可以像这样使用它:

代码语言:javascript
复制
if ($force) {
  //deletes a file or does something "bad"
}

现在,在调用脚本时,您可以像这样设置switch/flag参数:

代码语言:javascript
复制
.\yourscript.ps1 -server "http://otherserver" -force

如果要显式声明未设置该标志,则有一种特殊的语法可供使用

代码语言:javascript
复制
.\yourscript.ps1 -server "http://otherserver" -force:$false

指向相关微软文档的链接(适用于PowerShell 5.0;也可以在链接中找到3.0和4.0版):

票数 1K
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2157554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档