无忧启动论坛

标题: 来个练习贴,powershell 获取硬盘分区序列,分分钟的事儿 [打印本页]

作者: dos时代菜鸟    时间: 2019-3-22 16:47
标题: 来个练习贴,powershell 获取硬盘分区序列,分分钟的事儿
本帖最后由 dos时代菜鸟 于 2019-3-23 10:55 编辑




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



作者: dos时代菜鸟    时间: 2019-3-22 16:51
本帖最后由 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
复制代码



作者: nttwqz    时间: 2019-3-22 17:39
PS的功能比cmd强大多了
作者: 窄口牛    时间: 2019-3-22 18:13
win7是ps2.0,bug10是ps4.0?反正版本不同,这就是我说的自己用合适,外传不宜的道理。
作者: dos时代菜鸟    时间: 2019-3-22 20:27
win10 是 powershell 3.0 3.1

作者: bfgxp    时间: 2019-3-23 09:21
看来是时候该学习powershell 了。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3