我正在创建一个脚本,根据条件更新Excel电子表格。
这就是我目前所拥有的:
if ($endIRs -ne $null) {
$endIRs | ForEach-Object {
try {
$classification = $_.Classification
$priority = $_.Priority
$title = $_.Title
$id = $_.Id
switch ($classification) {
{($_ -eq 'Reports') -and ($priority -eq '1')} {
$GeAppsReportSheet.Cells.Item(8,2).Interior.ColorIndex = 3
$GeAppsReportSheet.Cells.Item(8,2) = 'RED'
}
#more switch statements to go here
}
catch {#catch tickets with $classification not listed}
}
}
一开始$endIRs
包含过去12小时内记录的一系列高优先级“事件”。如果没有,那么一切都将是“绿色”,默认设置。
我想用switch
语句实现的是if (($classification -eq 'Reports') -and ($priority -eq '1')) {'change the cell colour and text'}
,我可以自己做,但我需要它来检查优先级是“1”还是“2”并且做与电子表格中的“报告”分类单元格不同的内容。
你能在if
声明中做一个switch
声明,还是有更好的方法来做?
答案 0 :(得分:2)
您可以使用$true
作为switch
条件,并将检查作为脚本块值进行处理:
switch ($true) {
{($classification -eq 'Reports') -and ($priority -eq '1')} {
...
}
# ...
# more switch statements to go here
# ...
default {
...
}
}
但是,我从未真正喜欢过这种方法。对我来说,总是看起来像一个丑陋的黑客。我更喜欢if..elseif..else
控件结构:
if ($classification -eq 'Reports' -and $priority -eq '1') {
...
} elseif (...) {
...
} elseif (...) {
...
} else {
...
}
编辑:当然,您还可以使用“常规”switch
语句并在动作脚本块中嵌套其他条件:
switch ($classification) {
'Reports' {
if ($priority -eq '1') {
...
} elseif ($priority -eq '2') {
...
}
}
# ...
# more switch statements to go here
# ...
default {
...
}
}