许多函数和cmdlet根据传递给它的参数返回不同的类型。这使我有必要测试返回值。目前我正在使用嵌套的if-then-else语句。这是我今天开始编写的一个示例脚本,用于验证IP配置:
$adapters = get-wmiobject win32_networkadapterconfiguration -filter "ipenabled = 'true'"
$adapters_type = $adapters.gettype().tostring()
if ($adapters_type -eq "System.Management.ManagementObject") {
#TODO: configure network adapter.
}
else if ($adapters_type -eq "System.Object[]") {
#TODO: handle the case of multiple network adapters.
}
else {
echo "error: unexpected type returned from internal function."
}
当我有多个返回变量来测试时,我的代码会快速嵌套。有没有更自然的方法来处理可能由多种类型之一居住的变量?
答案 0 :(得分:2)
一个选项是确保Get-WmiObject上的结果始终是一个数组,例如:
$adapters = @(get-wmiobject win32_networkadapterconfiguration -filter "ipenabled = 'true'")
foreach ($adapter in $adapters) {
#TODO: configure adapter
}
除此之外,并且可能使用switch语句而不是一堆if / else语句,没有更好的方法来处理我能想到的不同返回类型。