我有一个脚本,它会根据间隔计算文件夹中的文件。它将写入文件夹中的文件数并对其进行颜色编码。我的问题是我需要它返回3个值:绿色,黄色或红色。
如果文件小于10,则将foregroundcolor输出为绿色。 如果它大于10,但小于20,则输出前景色为黄色。 如果超过21,则输出为红色。
如何对中间值设置上限,以便红色可以单独显示?
$Counter = Read-Host "Enter Update Interval"
$timeout = new-timespan -Minutes 1
$sw = [diagnostics.stopwatch]::StartNew()
Write-Host "Outbound Script"
$Counter
while ($sw.elapsed -lt $timeout){
if ((Get-ChildItem \\server\folder).count -le 12) {
Write-Host (Get-ChildItem \\server\folder).count "Items in Outbound" -ForegroundColor Green
} else {
Write-Host (Get-ChildItem \\server\folder).count "Items in Outbound" -ForegroundColor Yellow
}
start-sleep -seconds $Counter
}
Write-Host "Times-Out"
我尝试为所有Get-ChildItem
创建变量,但出于某种原因,如果我这样做,它只会计算一次。
答案 0 :(得分:2)
$Counter = Read-Host "Enter Update Interval"
$timeout = new-timespan -Minutes 1
$sw = [diagnostics.stopwatch]::StartNew()
Write-Host "Outbound Script"
$Counter
While ($sw.elapsed -lt $timeout){
$FileCount = (Get-ChildItem \\server\folder).count
If ($FileCount -le 10) {
Write-Host "$FileCount Items in Outbound" -ForegroundColor Green
} ElseIf ($FileCount -ge 11 -and $FileCount -le 20) {
Write-Host "$FileCount Items in Outbound" -ForegroundColor Yellow
} Else {
Write-Host "$FileCount Items in Outbound" -ForegroundColor Red
}
Start-Sleep -seconds $Counter
}
Write-Host "Times-Out"
答案 1 :(得分:2)
根据您使用switch获得条件的疯狂程度,这将是有益的。此外,希望不要过分,我们可以使用splatting来做到这一点,以便如果您的消息文本发生变化,您只需编辑一行。
Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller version
10 declared in library projectName\platforms\android\ build\ intermediates\exploded\aar\android\cordovaLib\unspecified\debug\AndroidManifest.xml .
Suggestion : use
tools.overrideLibrary = "org.apache.cordova" to force usage.
$filecount = (Get-ChildItem \\server\folder).count
$color = @{}
switch($filecount){
{$_ -le 10 }{$color.ForegroundColor = "Green"}
{11..20 -contains $_}{$color.ForegroundColor = "Yellow"}
{$_ -gt 20}{$color.ForegroundColor = "Red"}
}
Write-Host "$FileCount Items in Outbound" @color
涵盖范围要求。如果11..20 -contains $_
在10到21之间,则该条件成立。更具技术性的解释:$filecount
使用范围运算符创建数字数组,我们使用11..20
查看其中一个元素是否为-contains
。请注意您在这里的条件顺序。
答案 2 :(得分:1)
添加一个elseif语句。
IF ((Get-ChildItem \\server\folder).count -le 12) {...}
ELSEIF ((Get-ChildItem \\server\folder).count -lt 20) {...}
ELSE {...}