Board logo

标题: [问题求助] PowerShell读取文件内容后如何转换成表格并判断属性的值? [打印本页]

作者: PS2.0    时间: 2017-7-13 19:58     标题: PowerShell读取文件内容后如何转换成表格并判断属性的值?

1.txt内容如下:
  1. DeviceID                 VolumeName                        FreeSpace(GB)                   Free(%)
  2. --------                 ----------                        ---------------                 --------
  3. C:                       C                                              47                       15
  4. D:                       D                                             207                       55
复制代码
Get-Content 1.txt 之后如何转换成表格呢?

因为后面我想判断:
每个分区的FreeSpace(GB)是否小于50
每个分区的Free(%)是否大于30
作者: qazplm    时间: 2017-7-13 21:26

本帖最后由 qazplm 于 2017-7-13 23:07 编辑

table只是输出格式,原始对象才是ps方便操作的,不知你的txt内容怎么来,但从内容看原本应该就能被ps直接处理,弄成txt再转对象,除非是特殊文本,如csv、xml、json等,否则并不能简单的转换
方法一,转为对象
  1. $list=@();
  2. $t='DeviceID','VolumeName','FreeSpace','Free';
  3. gc '文本.txt'|Select-Object -skip 2|%{
  4.          $a=$_.trim() -split '\s+';
  5.          $b=New-Object Object;
  6.          0..3|%{Add-Member -inputObject $b -memberType NoteProperty -name $t[$_] -value $a[$_]}
  7.          $list+=$b;
  8. }
  9. $list
复制代码
方法二,以原始对象
  1. gwmi win32_logicaldisk -filter "DriveType=3" |format-table -autosize @{exp={$_.DeviceID};Lab="DeviceID"},@{exp={$(if($_.VolumeName){$_.VolumeName}else{$_.DeviceID[0]})};Lab="VolumeName"},@{exp={"{0:n0}" -f ($_.FreeSpace/1gb)};Lab="FreeSpace"},@{exp={"{0:n0}" -f ($_.FreeSpace/$_.Size*100)};Lab="Free"}
复制代码
方法三,直接处理txt
作者: PS2.0    时间: 2017-7-14 09:28

回复 2# qazplm


感谢。我没办法控制1.txt的生成,先试试第一种方法。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2