【发布时间】:2020-01-16 06:18:46
【问题描述】:
我正在尝试遍历驱动器号 A-Z,并为每个驱动器号输出一个新变量,结果将由我们使用的监控程序获取。目前代码重置了变量,所以我只得到一个驱动器号的结果(Z,因为它是循环中的最后一个)。我已经查看了动态变量(我不确定这是否是我需要的),但我有点迷茫……
理想情况下,我希望它输出以下内容:
$DriveLetterResultA = $DriveLetterResult for $DriveLetter 'A'
$DriveLetterResultB = $DriveLetterResult for $DriveLetter 'B'
$DriveLetterResultC = $DriveLetterResult for $DriveLetter 'C'
$DriveLetterResultD = $DriveLetterResult for $DriveLetter 'D'
etc...
这是无效的代码:
$DriveLetters = [char[]](0..255) -clike '[A-Z]'
foreach ($DriveLetter in $DriveLetters) {
$drive = New-Object system.io.driveinfo("$($DriveLetter)`:")
$drive.DriveType
$drive.DriveFormat
if (($drive.DriveType -eq "Fixed") -and ($drive.DriveFormat -eq "NTFS" -or ($drive.DriveFormat -eq "FAT") -or ($drive.DriveFormat -eq "FAT32") -or ($drive.DriveFormat -eq "exFAT"))) {
$DriveLetterResult = Repair-Volume -DriveLetter $DriveLetter -Scan -ErrorAction 0 -ErrorVariable RepairVolumeError
if ($DriveLetterResult-eq "ScanRunning") {
$DriveLetterResult = "ScanRunning (NoErrorsFound)"
}
if ($RepairVolumeError -ne "") {
$DriveLetterResult= $RepairVolumeError | Out-String
}
} else {
$DriveLetterResult = "NA (NoErrorsFound)"
}
}
【问题讨论】:
标签: powershell loops variables foreach