如何从命令提示符将布尔参数传递给 PowerShell 脚本
PowerShell 脚本是存储在以 .ps1 扩展名的文本文件中的结构化命令序列。执行时,PowerShell 按顺序处理这些命令,允许用户自动化各种任务。
为了使脚本更通用和适应性强,可以使用 param 语句在 PowerShell 代码中定义参数。当在脚本中定义一个参数时,就为执行时向脚本传递数据创建了一个入口点。
让我们用一个简单的例子来说明这一点。考虑一个名为 YourScript.ps1 的 PowerShell 脚本,它接受用户输入的值。
param (
    $a, $b
)
if ($a -lt $b) {
    Write-Host "$a is less than $b"
}
else {
    Write-Host "$a is not less than $b"
}
要执行此脚本并从命令提示符传递值,可以使用以下命令:
powershell.exe -NoProfile -Command .\YourScript.ps1 -a 4 -b 5
运行后,您将收到以下输出:
4 is less than 5
这展示了如何有效地将值传递给 PowerShell 脚本,为用户提供了自定义脚本行为的能力。
现在,让我们深入探讨从命令提示符向 PowerShell 脚本传递 Boolean 值的话题。Boolean 值可以表示 TRUE 或 FALSE,将其纳入脚本中对于决策和条件执行来说极为重要。
使用布尔参数从命令提示符传递布尔值到 PowerShell 脚本
要通过参数从命令提示符向 PowerShell 脚本传递布尔值,首先声明一个将接受布尔值的参数。您可以使用 [bool] 数据类型来指定该参数应接受布尔值。
例如:
param (
    [bool]$MyBooleanParameter
)
现在您已经设置好参数,可以在脚本中使用 $MyBooleanParameter 变量根据布尔值做出决策。
例如,考虑以下示例:
if ($MyBooleanParameter) {
    Write-Host "The Boolean parameter is true."
}
else {
    Write-Host "The Boolean parameter is false."
}
现在您已经在 PowerShell 脚本中定义了参数,可以在执行脚本时从命令提示符向其传递布尔值。
为此,请遵循以下步骤:
- 
打开命令提示符
按 Win+R,输入
cmd,然后按 Enter 打开命令提示符。 - 
导航到脚本目录
使用
cd命令转到您 PowerShell 脚本所在的目录。例如:cd C:\Path\To\Your\Script - 
执行脚本
要执行您的 PowerShell 脚本并向参数传递布尔值,请使用
PowerShell.exe命令。提供脚本文件的名称,并使用-MyBooleanParameter参数来传递布尔值。例如:
PowerShell.exe -File "YourScript.ps1" -MyBooleanParameter $true在上述示例中,我们将值
$true传递给-MyBooleanParameter参数。要向参数传递
false布尔值,也提供脚本文件的名称,并使用带有$false值的-MyBooleanParameter参数。例如:
PowerShell.exe -File "YourScript.ps1" -MyBooleanParameter $false在上述命令中,我们将值
$false传递给-MyBooleanParameter参数,这意味着在执行时,脚本中的布尔参数将接收一个false值。然后,您的脚本将根据该false值相应地执行。 
使用 switch 参数从命令提示符传递布尔值到 PowerShell 脚本
PowerShell 中的 switch 参数是一种特殊类型的参数,用于指定布尔选项。它们在参数存在(true)或缺失(false)时使用。
换句话说,您不需要为 switch 参数提供值;其存在本身表示一个 true 值,而其缺失表示一个 false 值。
要通过 switch 参数从命令提示符传递布尔值到 PowerShell 脚本,首先,将一个参数声明为 switch 来接受布尔值。您可以使用 [switch] 数据类型来指定该参数为开关。
以下是如何定义 switch 参数的示例:
param (
    [switch]$MySwitchParameter
)
然后,一旦定义了 switch 参数,您可以在脚本中使用 $MySwitchParameter 变量根据开关的存在(true)或缺失(false)来控制其行为。
例如,您可以使用 if 语句检查 switch 参数的状态:
if ($MySwitchParameter) {
    Write-Host "The switch is present, so the Boolean value is true."
}
else {
    Write-Host "The switch is absent, so the Boolean value is false."
}
在您的脚本中定义 switch 参数后,您可以从命令提示符轻松向其传递布尔值。
步骤如下:
- 
打开命令提示符
按 Win+R,输入
cmd,然后按 Enter 启动命令提示符。 - 
导航到脚本目录
使用
cd命令转到您 PowerShell 脚本所在的目录。例如:cd C:\Path\To\Your\Script - 
执行脚本
要执行您的 PowerShell 脚本并使用
switch参数传递布尔值,请使用PowerShell.exe命令。提供脚本文件的名称,并仅包括-MySwitchParameter开关以启用它。例如:
PowerShell.exe -File "YourScript.ps1" -MySwitchParameter在此示例中,开关存在,表示一个
true布尔值。要传递一个
false布尔值,只需在运行脚本时不包含switch参数即可。以下是示例:PowerShell.exe -File "YourScript.ps1"通过在执行脚本时不包含
switch参数,您实际上是传递了一个false布尔值,并且您的脚本可以根据此缺失采取适当的措施。 
通过 switch 参数从命令提示符传递布尔值到 PowerShell 脚本是一种有效且简单的方法来控制脚本的行为。switch 参数非常适合于您希望启用或禁用脚本中某些功能或行为的场景,而无需额外的参数或值。
使用字符串值从命令提示符传递布尔值到 PowerShell 脚本
当从命令提示符向 PowerShell 脚本传递布尔值时,另一种方法是使用字符串值。这种方法提供了更大的灵活性,因为它允许您将值如 true 或 false 作为字符串传递,并在脚本中将其转换为布尔值。
要通过字符串值从命令提示符传递布尔值到 PowerShell 脚本,请声明一个接受表示布尔状态的字符串值的参数。您可以为此参数使用 [string] 数据类型。
例如:
param (
    [string]$MyBooleanString
)
在脚本中,将字符串值转换为布尔值。PowerShell 提供了执行此转换的方法。
例如:
$MyBoolean = [System.Management.Automation.LanguagePrimitives]::ConvertTo([bool], $MyBooleanString)
您现在可以在脚本中使用 $MyBoolean 变量根据需要处理布尔值。例如:
if ($MyBoolean) {
    Write-Host "The Boolean value is true."
}
else {
    Write-Host "The Boolean value is false."
}
在您的脚本中定义用于字符串值的参数后,您可以在执行脚本时从命令提示符传递布尔值。以下是方法:
- 
打开命令提示符
按 Win+R,输入
cmd,然后按 Enter 启动命令提示符。 - 
导航到脚本目录
使用
cd命令转到您 PowerShell 脚本所在的目录。例如:cd C:\Path\To\Your\Script - 
执行脚本
要运行您的 PowerShell 脚本并传递表示布尔状态的字符串值,请使用
PowerShell.exe命令。提供脚本文件的名称并包含带有字符串值的-MyBooleanString参数,例如"true"或"false":PowerShell.exe -File "YourScript.ps1" -MyBooleanString "true" 
结论
通过字符串值从命令提示符向 PowerShell 脚本传递布尔值是一种灵活有效的方法,特别是在处理用户输入或可能包含布尔状态字符串表示的配置文件时。通过在脚本中将这些字符串值转换为布尔值,您可以无缝地使用它们并创建更具适应性和用户友好的脚本。
了解如何将字符串值转换为布尔值并在 PowerShell 脚本中使用它们是脚本开发人员的宝贵技能,因为它提供了更大的灵活性和在各种情境中更容易使用。
