当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 检查 PowerShell 中是否存在参数 [3 种方法]

作者:精品下载站 日期:2024-12-14 05:29:53 浏览:12 分类:玩电脑

检查 PowerShell 中是否存在参数 [3 种方法]


[玩转系统] 检查 PowerShell 中是否存在参数 [3 种方法]

在 PowerShell 中,检查参数是否存在非常重要,尤其是在创建采用输入参数的脚本时。然而,在深入研究开发接受参数并检查参数是否存在的 PowerShell 脚本的细节之前,了解如何在目录中创建脚本 .ps1 文件至关重要。

您需要执行以下步骤在目录中创建 PowerShell 脚本(yourFileName.ps1 文件):

  1. 打开文本编辑器,例如记事本、Notepad++ 或 Visual Studio Code。例如,我正在使用记事本
  2. 在文本编辑器中编写 PowerShell 脚本。
  3. 将文件保存在您选择的目录中。例如,我选择了E:\Test1目录。
    注意:保存文件时,选择文件类型所有文件
  4. 使用 .ps1 扩展名命名您的文件。

现在您已经了解了如何创建 PowerShell 脚本文件,是时候通过学习如何验证参数的存在来进一步扩展您在 PowerShell 方面的专业知识了。

$PSBoundParametersParam 块一起使用

使用 $PSBoundParametersParam 块来检查 PowerShell 中是否存在参数。

$PSBoundParameters 方法:

Param(
    [string]$arg1,
    [string]$arg2
)
if ($PSBoundParameters.ContainsKey('arg1')) {
    Write-Host "The first argument is $($PSBoundParameters['arg1'])"
} else {
    Write-Host "No arguments were passed for arg1"
}
if ($PSBoundParameters.ContainsKey('arg2')) {
    Write-Host "The second argument is $($PSBoundParameters['arg2'])"
} else {
    Write-Host "No arguments were passed for arg2"
}

上面的代码栅栏以 Script2.ps1 的形式保存在目录 E:\Test1 中。因此,完整的文件路径是E:\Test1\Script2.ps1

现在,在 PowerShell 上运行带有参数的以下路径:

运行 Script1.ps1 文件:

E:\Test1\Script2.ps1 Hello World

输出 :

The first argument is Hello
The second argument is World

上面的代码栅栏与前面的代码块类似,但它使用 $PSBoundParameters 自动变量,其中包含当前函数或脚本块的键值对字典。字典中的每个键代表已传递给函数或脚本块的参数的名称,对应的值是为该参数传递的实参。

定义参数后,脚本使用 ContainsKey() 检查 $PSBoundParameters 自动变量是否包含名为 arg1arg2 的键方法。如果字典中存在该键,则此方法返回 true,否则返回 false。

如果 $PSBoundParameters 字典包含 arg1 键,则脚本使用字符串插值 ($()) 来显示 arg1 的值>$arg1 在控制台消息中。否则,它会显示一条消息,指示没有为 $arg1 传递任何参数。同样,它适用于 $arg2 并将 arg2 的值显示到控制台。

将 if 与 Param 块一起使用

使用带有 Param 块的 if 语句来检查 PowerShell 中是否存在参数。

使用参数方法:

Param(
    [string]$arg1,
    [string]$arg2
)
if($arg1){
    Write-Host "The first argument is $arg1"
}
else{
    Write-Host "No arguments were passed for arg1"
}
if($arg2){
    Write-Host "The second argument is $arg2"
}
else{
    Write-Host "No arguments were passed for arg2"
}

上面的代码栅栏以 Script1.ps1 的形式保存在目录 E:\Test1 中。因此,完整的文件路径是E:\Test1\Script1.ps1

现在,在 PowerShell 上运行以下带参数的路径:

运行 Script1.ps1 文件:

E:\Test1\Script1.ps1 Hello World

输出 :

The first argument is Hello
The second argument is World

在上面的代码中,脚本开头的 Param() 块将参数及其类型定义为字符串。然后,脚本检查 $arg1 是否已作为参数传递。如果有,它会输出一条消息,指出:第一个参数是 [arg1 的值]

如果尚未传递,它会输出一条消息,描述 No argument were Passed for $arg1。然后,该脚本对 $arg2 执行相同的操作,检查它是否已通过并输出相应的消息。最后,Write-Host cmdlet 将消息输出到控制台。

使用 args 变量

使用 args 变量检查 PowerShell 中是否存在参数。

使用 args 变量:

if($args.Length -gt 0){
    Write-Host "The argument is: $args"
}
else{
    Write-Host "No arguments were passed"
}

上面的代码栅栏以Script3.ps1的形式保存在目录E:\Test1中。因此,整个文件路径是E:\Test1\Script3.ps1

现在,在 PowerShell 上运行以下带参数的路径:

运行 Script3.ps1 文件:

E:\Test1\Script3.ps1 Hello

输出 :

The argument is: Hello

该脚本接受上述代码中的一个参数,并使用 $args 自动变量来检查是否传递了参数。当我们使用参数 E:\Test1\Script3.ps1 Hello 运行脚本时,参数值显示为 Hello。而且,如果我们运行 Script3.ps1 文件而不指定参数,它将在 else 块中执行 Write-Host cmdlet,表示没有传递任何参数

无论您选择使用 $args 自动变量、带有 Param() 的 if 语句,使用这三种方法检查 PowerShell 中是否存在参数都有助于提高脚本和函数的可靠性和灵活性 块,或 $PSBoundParametersParam 块,具体取决于脚本或函数的具体需求。

使用这些方法,您可以确保您的脚本或函数可以处理不同的场景,并根据参数的存在或不存在提供准确的输出。

这就是如何检查 PowerShell 中是否存在参数的全部内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯