Nick's Blog

PowerShell查看磁盘空间编译与功能

本篇将介绍如何用PowerShell来查看磁盘空间,以及延伸到如何建立一个Parameter,甚至通过编写的PowerShell脚本来创建一个PowerShell功能。

主要命令行:Get-WMIobject ; Parameter ; cmdletbinding() ; Function ;

如何用PowerShell 查看C盘数据:

Get-wmiobject win32_logicaldisk -filter “DeviceID=’c:'”

DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 16442933248
Size : 42842714112
VolumeName :

这个命令行显示了C盘的所有属性,但是往往有些时候,我们并不需要查看所有的数据。例如,我们当前只想查看C盘的剩余空间:

PS C:> Get-WmiObject win32_logicaldisk -Filter “DeviceID=’c:'” | select @{n=’freegb’;e={$_.freespace / 1gb -as [int]}}

freegb
——
15

以上命令行告诉我们了C盘的剩余空间,是15个GB。但是我们现在想将这个PowerShell脚本分享给别人,使之变成任何计算机都可以使用的脚本,我们就需要在ComputerName上多做文章:

[cmdletbinding()]
param(
[parameter(mandatory=$true)]
$computername
)
Get-wmiobject -computername $computername win32_logicaldisk -filter “DeviceID=’c:'” | select @{name=’freegb’ ; expression={$_.freespace / 1gb -as [int]}}

当我们已经将这个PowerShell脚本编译好后,我并不希望每一次查看时,都需要运行一次脚本。因此我们可以将这个PowerShell脚本当作一个功能 (Function):

Function get-diskinfo {
[cmdletbinding()]
param(
[parameter(mandatory=$true)]
$computername
)
Get-wmiobject -computername $computername win32_logicaldisk -filter “DeviceID=’c:'” | select @{name=’freegb’ ; expression={$_.freespace / 1gb -as [int]}}
}

将其保存为diskinfo.psm1,然后将其保存在C:Users%Username%DocumentsWindowsPowerShellModules

这里有一个小窍门,如何使用PowerShell来查看Module的路径:

$env:PSModulePath -split “;”
C:Users%Username%DocumentsWindowsPowerShellModules
C:Program FilesWindowsPowerShellModules
C:WINDOWSsystem32WindowsPowerShellv1.0Modules

后两项每台电脑都是一样的,切记不要将自己的PowerShell Module文件存在后两项中。