我一直在研究一个输出两个文件的脚本,并包含一个参数,用于确定结果是否输出到几个.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
}
希望对您有所帮助!