DriveInfo.GetDrives Method
Retrieves the drive names of all logical drives on a computer.
Assembly: mscorlib (in mscorlib.dll)
| Exception | Condition |
|---|---|
| IOException |
An I/O error occurred (for example, a disk error or a drive was not ready). |
| UnauthorizedAccessException |
The caller does not have the required permission. |
This method retrieves all logical drive names on a computer. You can use this information to iterate through the array and obtain information on the drives using other DriveInfo methods and properties. Use the IsReady property to test whether a drive is ready because using this method on a drive that is not ready will throw a IOException.
The following code example demonstrates the use of the DriveInfo class to display information about all of the drives on the current system.
using System; using System.IO; class Test { public static void Main() { DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine(" File type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine( " Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); Console.WriteLine( " Total available space: {0, 15} bytes", d.TotalFreeSpace); Console.WriteLine( " Total size of drive: {0, 15} bytes ", d.TotalSize); } } } } /* This code produces output similar to the following: Drive A:\ File type: Removable Drive C:\ File type: Fixed Volume label: File system: FAT32 Available space to current user: 4770430976 bytes Total available space: 4770430976 bytes Total size of drive: 10731683840 bytes Drive D:\ File type: Fixed Volume label: File system: NTFS Available space to current user: 15114977280 bytes Total available space: 15114977280 bytes Total size of drive: 25958948864 bytes Drive E:\ File type: CDRom The actual output of this code will vary based on machine and the permissions granted to the user executing it. */
-
SecurityPermission
for calling unmanaged code, such as calling native code with platform invoke or COM interop. Associated enumeration: SecurityPermissionFlag.UnmanagedCode
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
<#
.SYNOPSIS
This script gets and displays basic information about drives on a local system.
.DESCRIPTION
This script uses the System.Io.DriveInfo's GetDrives method to get drive
info which is then displayed. This is a re-implementation of an MSDN
sample.
.NOTES
File Name : Get-DriveInfo.ps1
Author : Thomas Lee - tfl@psp.co.uk
Requires : PowerShell Version 2.0
.LINK
This script posted to:
http://pshscripts.blogspot.com/2010/07/get-driveinfops1.html
MSDN Sample posted at:
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.getdrives.aspx
.EXAMPLE
PSH [C:\foo]: .\Get-Driveinfo.ps1'
Drive C:\
File type: Fixed
Volume label:
File system: NTFS
Available space to current user: 6.75 gb
Total available space: 6.75 gb
Total size of drive: 48.828 gb
Drive D:\
File type: Fixed
Volume label:
File system: FAT32
Available space to current user: 1.81 gb
Total available space: 1.81 gb
Total size of drive: 2.003 gb
<ETC...>
#>
# Get Drive Info
$allDrives = [System.Io.DriveInfo]::GetDrives()
# Now display details
foreach ($d in $allDrives) {
"Drive {0}" -f $d.Name
" File type: {0}" -f $d.DriveType
if ($d.IsReady) {
" Volume label: {0}" -f $d.VolumeLabel
" File system: {0}" -f $d.DriveFormat
$fs = $d.AvailableFreeSpace/1gb
$tfs = $d.TotalFreeSpace/1gb
$TS = $d.TotalSize/1gb
" Available space to current user:{0, 15:n2} gb" -f $fs
" Total available space: {0, 15:n2} gb" -f $tfs
" Total size of drive: {0, 15:n3} gb" -f $ts
}
}
- 7/18/2010
- Thomas Lee
- 11/20/2010
- Thomas Lee
- 11/19/2010
- DrNickBailey
- 11/20/2010
- Thomas Lee