4

Get-PSDrive возвращает отрицательное число для используемого дискового пространства.

PS C:\Users\thomas> Get-PSDrive

Name           Used (GB)     Free (GB) Provider      Root                                                               CurrentLocation
----           ---------     --------- --------      ----                                                               ---------------                                                                                       
[...]                                                                                     
H                -782,81       1172,81 FileSystem    \\server\fileexchange   
[...]

Это имеет особое значение?

Я посмотрел справку (Get-Help 'Get-PSDrive' -ShowWindow), но не смог найти объяснения.

Мне известно о подобной проблеме, связанной с Get-Process, когда причиной является переполнение. Здесь то же самое? Есть ли обходной путь?

По просьбе @Andrew Morton в комментариях:

PS C:\Users\thomas> [System.IO.DriveInfo]::GetDrives() | Format-Table

Name DriveType DriveFormat IsReady AvailableFreeSpace TotalFreeSpace    TotalSize RootDirectory VolumeLabel
---- --------- ----------- ------- ------------------ --------------    --------- ------------- -----------
[...]
H:\    Network NTFS           True       223231537152  1253398024192 418759311360 H:\           Data       
[...]                   

Я прочитал это как 223 ГБ свободного места, 1253 ГБ свободного места и 418 ГБ общего размера. Если я просто вычту общее свободное пространство из общего размера, я получу -835 ГБ, что соответствует значению Powershell (учитывая, что за это время были добавлены некоторые данные).

Вот что говорит Windows Explorer:

Снимок экрана накопителя в проводнике Windows

1 ответ1

1

Это означает, что ваш привод превышает поддерживаемое вами значение функции, которую вы использовали.

Пример: диск объемом 3 ТБ, который вы пытаетесь прочитать с помощью функции, поддерживающей только 2 ТБ, приведет к следующему:

Объем накопителя 3 ТБ на самом деле составляет 2,72 ТБ. Поскольку оно превышает 2 ТБ, остальное пространство будет иметь отрицательное значение (поэтому ваш результат будет равен -0,72 ТБ).

Если вы превысите 4 ТБ, это снова будет положительное значение, а если вы превысите 6 ТБ, оно снова будет отрицательным. Это повторяется навсегда, но причина в том, что используемая вами функция ограничена 2 ТБ.

Это справедливо для любой функции чтения дискового пространства, и ограничения могут существовать и при других значениях (например, 4 ГБ для старых функций, которые пытаются читать большие файлы NTFS).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .