PowerShell 开关仍在生成输出文件



我一直在研究一个输出两个文件的脚本,并包含一个参数,用于确定结果是否输出到几个.csv文件。

[Parameter(Mandatory = $False)]
[String]$ToFile = $True
if ($ToFile = $True) {
$OutputCerts.GetEnumerator() | Export-Csv -NoTypeInformation -Path $Path
}
if ($IncludeExpiredCerts -eq $True -And $ToFile -eq $True) {
$ExpiredCerts.GetEnumerator() | Export-Csv -NoTypeInformation -Path $ExpiredPath
}

我遇到的问题是$ToFile开关,当$ToFile为真时,它确实输出$OutputCerts.csv,当我包括设置为 true 的$IncludeExpiredCerts开关时,我得到了两个.csv文件,如您所料,但是,当我将$ToFile开关设置为 false 时,我仍然得到.csv输出,我不确定为什么。

任何建议将不胜感激。

我相信notjustme的评论是解决您问题的方法,但我想补充一些东西:

使用[switch]$ToFile呢? 这将提供一个仅允许布尔值的开关参数。如果您使用的是字符串类型,则可以使用任何文本并接受。

与其他开关值一样,默认情况下为 false,使用时为 true。例如:

function Test-Funct {
param([switch]$test = $true)
Write-Host Switch Value: $test
}

然后在测试时:

Test-Funct
Switch Value: False
Test-Funct -test
Switch Value: True

也有效:

Test-Funct -test:$false
Switch Value: False
Test-Funct -test:$true
Switch Value: True

另一种选择是使用 bool 类型,如果您想将参数设置为强制性:

function Test-Funct {
param(
[Parameter(Mandatory=$true)]
[bool]$test
)
Write-Host Switch Value: $test
}

希望对您有所帮助!

最新更新