标题: [问题求助] PowerShell获取硬盘分区信息 [打印本页]
作者: terse 时间: 2013-9-1 17:02 标题: PowerShell获取硬盘分区信息
看HAT发的教程 看了几篇没看完就手痒了(希望别被喷 要我看完再写) 能帮看看写的代码这样规范不
看的教程 还没消化 (我喜欢一边写一边消化) 还望得到指点- "盘符 总容量, 可用空间, 已用空间"
- foreach ($arr in gwmi Win32_LogicalDisk| where-object -filterscript {$_.drivetype -eq 3}) {
- $size = ($arr.Size/1GB).tostring("f2")
- $FreeSpace = ($arr.FreeSpace/1GB).tostring("f2")
- $arr.DeviceID + " " + $size + " GB, " + $FreeSpace + " GB, " + ($size - $FreeSpace).tostring("f2") + " GB"
- }
复制代码
我想知道为什么这里 format-table 没作用呢 正确的用法是怎样的
是不是自定函里不可用 按我的理解 既然 按对象处理 应该可用的啊- filter fun {
- $_.deviceid.tostring() + ($_.size/1GB).tostring("f2") + "GB" + ($_.freespace/1GB).tostring("f2") + "GB" | format-table
- }
- get-wmiobject win32_logicaldisk | where-object -filterscript {$_.drivetype -eq 3} | fun
复制代码
另请教下 PowerShell 的 Get-Content 有没有像 CMD 的 FOR /F 这样 有的话 分隔符 和 列怎么表达的
目前这样处理 但文本对齐有问题- function fun {
- begin{
- "盘符 总容量 可用空间 已用空间"
- }
- process{
- $_.deviceid + " " + ($_.size/1GB).tostring("f2") + "GB " + ($_.freespace/1GB).tostring("f2") + "GB " + ($_.size/1GB-$_.freespace/1GB).tostring("f2") + "GB"
- }
- }
- get-wmiobject win32_logicaldisk |where-object -filterscript {$_.drivetype -eq 3}| fun
-
- Start-Sleep –m 10000
复制代码
作者: terse 时间: 2013-9-2 15:15
本帖最后由 terse 于 2013-9-2 15:42 编辑
同一命令 加个输出格式 一个是显示GB 另一不是- get-psdrive -psprovider filesystem
复制代码
- get-psdrive -psprovider filesystem | format-table -autosize root,Used,Free
复制代码
有点进步了 这样处理 稍好点- function fun {
- begin {write-host 盘符 总容量GB 可用空间GB 已用空间GB -Separator " "} # "这里"是TAB键
- process{
- write-host $_.deviceid ($_.size/1GB).tostring("f2") GB ($_.freespace/1GB).tostring("f2") GB ($_.size/1GB-$_.freespace/1GB).tostring("f2") GB -Separator " "
- }
- }
- get-wmiobject win32_logicaldisk |where-object -filterscript {$_.drivetype -eq 3}| fun
-
- Start-Sleep –m 10000
复制代码
作者: DAIC 时间: 2013-9-2 16:56
回复 2# terse
制表符可以这样表示:复制代码
作者: terse 时间: 2013-9-2 16:57
本帖最后由 terse 于 2013-9-2 17:13 编辑
回复 3# DAIC
收到 谢了
另请教DAIC兄 能否说下 取文本列方法- function fun {
- begin {"盘符 `t 总容量 `t 可用空间 `t 已用空间"}
- process{
- write-host $_.deviceid "`t" ($_.size/1GB).tostring("f2") GB "`t" ($_.freespace/1GB).tostring("f2") GB "`t" ($_.size/1GB-$_.freespace/1GB).tostring("f2") GB
- }
- }
-
- get-wmiobject win32_logicaldisk |where-object -filterscript {$_.drivetype -eq 3}| fun
-
- Start-Sleep –m 10000
复制代码
作者: DAIC 时间: 2013-9-2 17:10
回复 4# terse
第一列:- "a b c" | %{$_.split()[0]}
复制代码
第二列:- "a b c" | %{$_.split()[1]}
复制代码
作者: terse 时间: 2013-9-2 17:16
回复 5# DAIC
先谢DAIC兄
这样是否把 字符变为数组来处理的 例中是空格分割?
作者: DAIC 时间: 2013-9-2 17:19
回复 6# terse
对,就是这个意思。
作者: DAIC 时间: 2013-9-2 17:34
http://technet.microsoft.com/zh- ... .10.powershell.aspx
从这个链接里面看到gwmi有个-filter选项,于是我也仿了一个:- "盘符`t`t总容量`t`t可用空间`t已用空间"
- gwmi win32_logicaldisk -filter "drivetype = 3" | % {
- $_.deviceid + "`t`t" + `
- ($_.size/1GB).tostring("f2") + "`t`t" + `
- ($_.freespace/1GB).tostring("f2") + "`t`t" + `
- ($_.size/1GB-$_.freespace/1GB).tostring("f2")
- }
复制代码
作者: DAIC 时间: 2013-9-2 17:39
增加一个使用率- "盘符`t总容量(GB)`t可用空间(GB)`t已用空间(GB)`t使用率"
- gwmi win32_logicaldisk -filter "drivetype = 3" | % {
- $_.deviceid + "`t" + `
- ($_.size/1GB).tostring("f2") + "`t`t" + `
- ($_.freespace/1GB).tostring("f2") + "`t`t" + `
- ($_.size/1GB-$_.freespace/1GB).tostring("f2") + "`t`t" + `
- (($_.size-$_.freespace)/$_.size*100).tostring("f2") + "%"
- }
复制代码
作者: terse 时间: 2013-9-2 18:09
回复 9# DAIC
不错 还是你的精简些
作者: terse 时间: 2013-9-3 13:35
本帖最后由 terse 于 2013-9-4 13:12 编辑
再学习一个- GWmi win32_logicaldisk -Filter "DriveType=3" |`
- format-table -autosize @{exp={$_.DeviceID};Lab="盘符"},`
- @{Exp={"{0:N2}" -f ($_.Size/1GB)+" (GB)"};Lab="总容量"},`
- @{Exp={"{0:N2}" -f ($_.FreeSpace/1GB)+" (GB)"};Lab="可用空间"},`
- @{Exp={"{0:N2}" -f (($_.Size-$_.FreeSpace)/1GB)+" (GB)"};Lab="已用空间"},`
- @{Exp={"{0:P2}" -f (($_.size-$_.freespace)/$_.size)};Lab="使用率"}
- Start-Sleep –m 10000
复制代码
- GWmi win32_logicaldisk -Filter "DriveType=3" |`
- Format-Table -autosize @{expression={$_.DeviceID};Label="盘符"},`
- @{Expression={($_.Size/1GB).tostring("f2")};Label="总容量(GB)"},`
- @{Expression={($_.FreeSpace/1GB).tostring("f2")};Label="可用空间(GB)"},`
- @{Expression={(($_.Size-$_.FreeSpace)/1GB).tostring("f2")};Label="已用空间(GB)"},`
- @{Expression={(($_.size-$_.freespace)/$_.size*100).tostring("f2")};Label="使用率(%)"}
- Start-Sleep –m 100000
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |