[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 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 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

TOP

回复 2# qazplm


感谢。我没办法控制1.txt的生成,先试试第一种方法。
环境所限,需要使用 PowerShell 2.0 版本。

TOP

返回列表