Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

ほとんどのWindowsユーザーは、フォルダーのサイズを確認する最も簡単な方法は、ファイルエクスプローラーでフォルダーのプロパティを開くことであることを知っています。より経験豊富なユーザーは、 TreeSizeなどのサードパーティツールを使用することを好みます。 またはWinDirStat 。ただし、特定のディレクトリ内のフォルダのサイズに関するより詳細な統計情報を取得したり、特定のファイルタイプを除外したりする場合は、PowerShell機能を使用することをお勧めします。この記事では、PowerShellを使用してディスク上の特定のフォルダー(およびすべてのサブフォルダー)のサイズをすばやく取得する方法を説明します。

Get-ChildItemを使用できます ( gci エイリアス)および Measure-Object 測定 エイリアス)PowerShellのファイルとフォルダー(サブフォルダーを含む)のサイズを取得するコマンドレット。最初のコマンドレットでは、指定された基準に従って指定されたディレクトリ内のファイル(サイズ付き)のリストを取得でき、2番目のコマンドレットでは算術演算を実行します。

ヒント。 以前の記事の1つで、PowerShellでGet-ChildItemコマンドレットを使用して、ディスク上で最大のファイルを検索する方法を示しました。

たとえば、C:\ ISOフォルダーのサイズを取得するには、次のコマンドを実行します。

Get-ChildItem C:\ ISO | Measure-Object -Property Length -sum

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

ご覧のとおり、このディレクトリ内のファイルの合計サイズは Sumに表示されます。 フィールドであり、約2.1 GBです(サイズはバイト単位で示されます)。

サイズをより便利なMBまたはGBに変換するには、次のコマンドを使用します。

(gci c:\ iso |長さ-s).sum /1Gbを測定

または:

(gci c:\ iso |長さ-s).sum /1Mbを測定

結果を小数点以下2桁に丸めるには、次のコマンドを実行します。

"{0:N2} GB" -f((gci c:\ iso |長さ-s).sum / 1Gbを測定)

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

PowerShellを使用して、ディレクトリ内の特定の種類のすべてのファイルの合計サイズを計算できます。たとえば、フォルダ内のすべてのISOファイルの合計サイズを取得するとします。

(gci c:\ iso * .iso |長さ-s).sum /1Mbを測定

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

上記のコマンドを使用すると、指定したディレクトリ内のファイルの合計サイズのみを取得できます。ディレクトリにサブフォルダがある場合、サブフォルダ内のファイルのサイズは計算されません。サブディレクトリを含むディレクトリ内のファイルの合計サイズを取得するには、 –Recurseを使用します パラメータ。 C:\ Windows内のファイルの合計サイズを取得しましょう フォルダ:

"{0:N2} GB" -f((gci –force c:\ Windows –Recurse -ErrorAction SilentlyContinue | Measurement Length -s).sum / 1Gb)

非表示ファイルとシステムファイルのサイズを考慮に入れるために、私は –forceを使用しました 議論も。

したがって、ローカルドライブのC:\ Windowsのサイズは約40GBです(スクリプトはNTFS圧縮を無視します)。

ヒント 。ディレクトリアクセスエラー(PermissionDenied-> DirUnauthorizedAccessError)を防ぐには、 -ErrorAction SilentlyContinueを使用します。 パラメータ。

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

このスクリプトは、シンボリックリンクまたはハードリンクが含まれている場合、ディレクトリのサイズを誤って計算します。たとえば、 C:\ Windows フォルダには、WinSxSフォルダ(Windowsコンポーネントストア)内のファイルへの多くのハードリンクが含まれています。その結果、そのようなファイルは数回カウントされる可能性があります。結果のハードリンクを無視するには、次のコマンドを使用します(完了するまでに長い時間がかかります):

"{0:N2} GB" -f((gci –force C:\ windows –Recurse -ErrorAction SilentlyContinue | Where-Object{$_。LinkType-notmatch"HardLink"} |長さ-s).sumを測定/ 1Gb)

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

ご覧のとおり、Windowsフォルダの実際のサイズは少し小さくなっています。

フィルタを使用して、最終的なサイズを計算するときに考慮するファイルを選択できます。たとえば、2020年に作成されたファイルのサイズを取得できます:

(gci -force c:\ ps –Recurse -ErrorAction SilentlyContinue |?{$_。CreationTime-gt '1/1/20' -AND$_。CreationTime-lt'12 /31/20'}|測定長さ-s).sum / 1Gb

指定したディレクトリ内のすべての第1レベルのサブフォルダのサイズを取得できます。たとえば、フォルダC:\Users内のすべてのユーザープロファイルのサイズを取得するとします。

gci -force'C:\ Users'-ErrorAction SilentlyContinue | ? {$ _ -is [io.directoryinfo]} | %{
$ len =0
gci -recurse -force$_。fullname-ErrorActionSilentlyContinue | %{$ len + =$_。length}
$ _。fullname、'{0:N2} GB' -f($ len / 1Gb)
}

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

foreach-objectのエイリアスです ループ。

続けましょう。システムハードドライブのルートにある各ディレクトリのサイズを見つけて、分析に便利なテーブル形式で情報を表示し、フォルダサイズで並べ替えることがタスクであるとします。

システムC:\ドライブ上のディレクトリのサイズに関する情報を取得するには、次のPowerShellスクリプトを実行します。

$ targetfolder ='C:\'
$ dataColl =@()
gci -force $ targetfolder -ErrorAction SilentlyContinue | ? {$ _ -is [io.directoryinfo]} | %{
$ len =0
gci -recurse -force$_。fullname-ErrorActionSilentlyContinue | %{$ len + =$_。length}
$ foldername =$_。fullname
$ foldersize ='{0:N2}' -f($ len / 1Gb)
$ dataObject =New-Object PSObject
Add-Member -inputObject $ dataObject -memberType NoteProperty -name“ foldername” -value $ foldername
Add-Member -inputObject $ dataObject -memberType NoteProperty -name“ foldersizeGb” -value $ foldersize
$ dataColl + =$ dataObject
}
$ dataColl | Out-GridView-タイトル「サブディレクトリのサイズ」

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

ご覧のとおり、テーブルのグラフィックビューが表示され、システムドライブC:\のルートにあるすべてのフォルダーとそのサイズが表示されます(テーブルは Out-GridView によって生成されます) コマンドレット)。列ヘッダーをクリックすると、フォルダーをサイズで並べ替えることができます。結果をCSVにエクスポートすることもできます( | Export-Csv folder_size.csv )またはExcelファイルに。

PowerShellスクリプトでディレクトリサイズチェックを使用している場合は、別の関数を作成できます。

function Get-FolderSize {
[CmdletBinding()]
Param(
[Parameter(Mandatory =$ true、ValueFromPipeline =$ true)]
$ Path

if((Test-Path $ Path)-and(Get-Item $ Path ).PSIsContainer){
$ Measure =Get-ChildItem $ Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
$ Sum ='{0:N2}' -f($ Measure.Sum / 1Gb)
[PSCustomObject] @ {
"Path" =$パス
"Size($ Gb)" =$ Sum
}
}
}

この関数を使用するには、フォルダパスを引数としてコマンドを実行するだけです。

Get-FolderSize('C:\ PS')

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

ローカルのPowerShell関数を使用して、 Invoke-Commandを介してリモートコンピューターのフォルダーサイズを確認できます。 (PowerShell Remoting)コマンドレット。

Invoke-Command -ComputerName hq-srv01 -ScriptBlock $ {Function:Get-FolderSize} –ArgumentList'C:\ PS'

PowerShell:Windowsのディスク上のフォルダーサイズを取得する

これらのコマンドは、PowerShellCore7.xの新しいバージョンを含むすべてのPowerShellバージョンで機能します。


  1. Windows 10 でフォルダ サイズを表示/表示する 3 つの方法

    この記事では、Windows 10 でフォルダー サイズを表示することに焦点を当てた 3 つの方法について説明します。これら 3 つの方法のそれぞれの主な動機は、Windows 10 でフォルダー サイズを表示する方法の問題を解決することです。 パート 1. Windows エクスプローラーでフォルダー サイズを表示する方法 パート 2. プロパティから Windows 10 のフォルダー サイズを表示する方法 パート 3. アプリを使用して Windows 10 でフォルダ サイズを表示する方法 パート 1. Windows エクスプローラーでフォルダー サイズを表示する方法 Wind

  2. Windows 11 でフォルダのストレージ使用状況を確認する方法

    フォルダーのストレージ使用率を調べることで、PC 上のどのフォルダーが最も多くのドライブ容量を使用しているかがわかります。 アプリケーションを削除する 最大のフォルダーからファイルを削除 (または圧縮) し、最も多くのスペースを占有しているファイルを特定したら、ファイルを圧縮できます。 Windows 11 のフォルダーのデータ サイズは、いくつかの方法で調べることができます。ファイル エクスプローラー、コマンド プロンプト、設定アプリ、およびさまざまなサードパーティ プログラムのすべてで、フォルダー サイズ情報を表示できます。これらは、Windows 11 でフォルダー ストレージの使用状