无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4230|回复: 5
打印 上一主题 下一主题

来个练习贴,powershell 获取硬盘分区序列,分分钟的事儿

[复制链接]
跳转到指定楼层
1#
发表于 2019-3-22 16:47:45 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 dos时代菜鸟 于 2019-3-23 10:55 编辑




parts.7z (1.42 KB, 下载次数: 70)


评分

参与人数 1无忧币 +5 收起 理由
dfw9 + 5 很给力!

查看全部评分

6#
发表于 2019-3-23 09:21:55 | 只看该作者
看来是时候该学习powershell 了。
回复

使用道具 举报

5#
 楼主| 发表于 2019-3-22 20:27:42 | 只看该作者
win10 是 powershell 3.0 3.1
回复

使用道具 举报

4#
发表于 2019-3-22 18:13:50 来自手机 | 只看该作者
win7是ps2.0,bug10是ps4.0?反正版本不同,这就是我说的自己用合适,外传不宜的道理。
回复

使用道具 举报

3#
发表于 2019-3-22 17:39:49 来自手机 | 只看该作者
PS的功能比cmd强大多了
回复

使用道具 举报

2#
 楼主| 发表于 2019-3-22 16:51:08 | 只看该作者
本帖最后由 dos时代菜鸟 于 2019-3-23 16:46 编辑

win10 powershell 测试通过

源码在此:
  1. #获取硬盘分区序列 分区所属硬盘的名称,接口,大小,分区类型;分区的序号,类型,文件系统类型,盘符,大小,卷标......

  2. $disks=get-disk
  3. $parts0=get-partition
  4. $vols0=get-volume
  5. $parts=@()

  6. if ($host.UI.RawUI.WindowSize.width -lt $host.ui.rawui.maxphysicalwindowsize.width) {
  7.   $host.UI.RawUI.BufferSize = new-object System.Management.Automation.Host.Size($host.ui.rawui.maxphysicalwindowsize.width,20000)
  8.   $host.UI.RawUI.WindowSize = new-object System.Management.Automation.Host.Size($host.ui.rawui.maxphysicalwindowsize.width,$host.ui.rawui.maxphysicalwindowsize.Height)
  9. }

  10. function size_x ($size0) {
  11.   switch($size0.tostring().length)
  12.   {
  13.       {$_ -ge 15}     { return ([math]::truncate($size0/1Tb).tostring()+" TB").padleft(8," ")}
  14.       {$_ -ge 10}     { return ([math]::truncate($size0/1gb).tostring()+" GB").padleft(8," ")}
  15.       {$_ -ge 5 }     { return ([math]::truncate($size0/1Mb).tostring()+" MB").padleft(8," ")}
  16.       default         { return ($size0.tostring() +" KB").padleft(8," ")}
  17.   }
  18. }

  19. foreach($disk in $disks) {
  20.   $part_x=""|select-object -property Disk_Name,Disk_size,Disk_free,BusType,Style,Disk,Part,Part_type,Ltr,FS,Offset,Part_size,Part_Free,Label,Boot,Active,System,Hidden,Offline,ReadOnly
  21.   $part_x.Disk_name=$disk.FriendlyName
  22.   $part_x.disk_size=size_x($disk.size)
  23.   $part_x.disk_free=size_x($disk.LargestFreeExtent)
  24.   $part_x.Style=$disk.PartitionStyle
  25.   $part_x.disk=$disk.Number
  26.   $part_x.BusType=$disk.bustype
  27.   $part_x.Part="."
  28.   $part_x.Boot=$disk.IsBoot
  29.   $part_x.System=$disk.IsSystem
  30.   $part_x.Offline=$disk.IsOffline
  31.   $part_x.ReadOnly=$disk.IsReadOnly
  32.   $parts+=$part_x
  33.   
  34.   ($parts0|where {$_.diskNumber -eq $disk.number})| % {
  35.         $part_x=""|select-object -property Disk_Name,Disk_size,Disk_free,BusType,Style,Disk,Part,Part_type,Ltr,FS,Offset,Part_size,Part_Free,Label,Boot,Active,System,Hidden,Offline,ReadOnly
  36.         $part_x.disk=$disk.number
  37.         $part_x.part=$_.PartitionNumber.tostring().padright(3," ")
  38.         $part_x.Ltr=$_.driveletter.ToString().trim()
  39.         if ($part_x.ltr -eq "") { $part_x.ltr="*"}
  40.         $part_x.part_type=$_.type
  41.         $part_x.Offset=size_x($_.offset)
  42.         $part_x.Part_size=size_x($_.size)
  43.         $part_x.Active=$_.isActive
  44.         $part_x.Boot=$_.IsBoot
  45.         $part_x.System=$_.IsSystem
  46.         $part_x.Hidden=$_.IsHidden
  47.         $part_x.Offline=$_.IsOffline
  48.         $part_x.ReadOnly=$_.IsReadOnly
  49.         if ($_.accesspaths -ne $null) {
  50.           $part_path=$_.AccessPaths[$_.AccessPaths.count-1]
  51.           $part_x.FS = ($vols0|where {$_.uniqueid -eq $part_path}).filesystem
  52.           $part_x.part_free = size_x(($vols0|where {$_.uniqueid -eq $part_path}).sizeRemaining)
  53.           $part_x.Label = ($vols0|where {$_.uniqueid -eq $part_path}).filesystemLabel
  54.         }
  55.         $parts+=$part_x
  56.   }
  57. }
  58. cls

  59. ""
  60. ""
  61. "-----------------------------------------------------------------------"
  62. ($parts|where {$_.part -eq "." })|format-table -property disk,disk_name,bustype,disk_size,disk_free,Style,Boot,System,Offline,hidden,readonly
  63. ($parts|where {$_.part -ne "." })|format-table -property disk,part,part_type,fs,LTR,Offset,part_size,part_free,label,Boot,Active,System,Offline,hidden,readonly
  64. "-----------------------------------------------------------------------"
  65. pause
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 19:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表