[英]Powershell: foreach loop giving incorrect output
脚本编写和 powershell 的新手。需要帮助了解我在这里出错的地方。 尝试初始化或设置磁盘在线测试 output 会给出相同的结果,无论磁盘实际 state 是什么。 用一个脚本。
disk_stat.ps1
$hdisk = get-disk | select number, partitionstyle
foreach ($object in $hdisk)
{
if ($object -ne 'MBR')
{
write-host = $object.number,$object.partitionstyle "Needs to be set ONLINE"
exit
}
else
{
write-host = $object.number,$object.partitionstyle "Needs to be initialized"
exit
}
}
来自“get-disk | select number, partitionstyle” output =
number PartitionStyle
------ --------------
0 MBR
1 RAW
所以我想要的 output 应该告诉我哪个数字/分区样式是 Raw、offlineetc..
Output: PS C:\Users\Administrator> C:\Temp\disk_stat.ps1 = 0 MBR 需要初始化
您需要丢失 Exit 语句,因为您希望它处理机器上的所有磁盘,至少我会这么认为? 您还可以通过删除 Select 语句和 Write-Host 作为字符串 "" 本身暗示这一点来简化代码。 此外,您需要使用 $() 评估 object 属性,如图所示。
Clear-Host
$hdisk = get-disk
foreach ($($object.PartitionStyle) in $hdisk) {
if ($object -ne 'MBR') {
"$($object.number) $($object.partitionstyle) Needs to be set ONLINE"
}
else {
"$($object.number) $($object.partitionstyle) Needs to be initialized"
}
} #End Foreach
样本 Output:
0 GPT Needs to be set ONLINE
1 GPT Needs to be set ONLINE
2 GPT Needs to be set ONLINE
注意:我的机器上没有任何 MBR 磁盘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.