繁体   English   中英

Powershell:foreach 循环给出不正确的 output

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM