相关疑难解决方法(0)

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

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

似乎对"最佳"方式有几个答案,因此我坚持如何处理如下简单的事情:

script.ps1 /n name /d domain
Run Code Online (Sandbox Code Playgroud)

script.ps1 /d domain /n name.
Run Code Online (Sandbox Code Playgroud)

有没有一个可以更好地处理这个问题的插件?我知道我在这里重新发明轮子.

显然我已经不是很漂亮而且肯定不是"最好的",但它确实有效..而且它是UGLY.

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
Run Code Online (Sandbox Code Playgroud)

powershell command-line-arguments

464
推荐指数
1
解决办法
64万
查看次数

如何在PowerShell脚本中指定非位置参数?

我在param脚本开头有了以下块

param(
 [string]$command,
 [string]$version = "1.1.0"
)
Run Code Online (Sandbox Code Playgroud)

这是好的,只是我需要$version成为一个位置参数,因此,如果您键入

.\script.ps1 run argument
Run Code Online (Sandbox Code Playgroud)

然后$args应该包含"参数",$version应该是"1.1.0".我知道我可以使用C#Cmdlet来实现它,但如果我能将它作为单个脚本提供,那将会更方便.

powershell

8
推荐指数
1
解决办法
2106
查看次数

如何强制声明的参数需要显式命名?

我很难想到这一点.如果我希望所有声明的参数在设置时需要显式命名,并且我想从$ args变量中取出未命名的任何内容,我该怎么做?

如果我的脚本声明了以下参数:

param($installdir, $compilemode, $whatever) 
Run Code Online (Sandbox Code Playgroud)

然后传递一个文件列表(在这种情况下我不想指定安装目录,编译模式等)前三个参数会吞噬我的参数.所以,我想通过:

c:\> MyScript file-1.cs file-2.cs file-3.cs file-4.cs 
Run Code Online (Sandbox Code Playgroud)

并获得所有4个字符串$ args,或者调用:

c:\> MyScript -CompileMode simple file-1.cs -InstallDir c:\temp file-2.cs
Run Code Online (Sandbox Code Playgroud)

使用包含2个文件的$ args获取$ compilemode和$ installdir的值...我该怎么做?

powershell

4
推荐指数
1
解决办法
1331
查看次数

标签 统计

powershell ×3

command-line-arguments ×1