Через Powershell не удаётся отформатировать диск с файловой системой NTFS?

Через Powershell не удаётся отформатировать диск с файловой системой NTFS?

Через Powershell не удаётся отформатировать диск с файловой системой NTFS?

Следующий код работает до попытки форматирования. Скрипт запускается от имени администратора. Файловая система не NTFS. Размер блока — по умолчанию для диска и NTFS. Я постоянно получаю отказ в доступе при попытке форматирования. Среда — Windows 11, полностью исправленная/обновленная на дату этого поста.

    Clear-Disk -Number 6 -RemoveData -Confirm:$false
    Initialize-Disk -Number 6 -PartitionStyle GPT -Confirm:$false
    New-Partition -DiskNumber 6 -UseMaximumSize -DriveLetter 'T'
    Format-Volume -DriveLetter 'T' -FileSystem NTFS -NewFileSystemLabel 'Test' -AllocationUnitSize 4096

Пример...

PS C:\WINDOWS\system32> Clear-Disk -Number 6 -RemoveData -Confirm:$false
PS C:\WINDOWS\system32> Initialize-Disk -Number 6 -PartitionStyle GPT -Confirm:$false
PS C:\WINDOWS\system32> New-Partition -DiskNumber 6 -UseMaximumSize -DriveLetter 'T'
   DiskPath: \\?\usbstor#disk&ven_hitachi_&prod_dk23aa-60&rev_0000#000000000000&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
PartitionNumber  DriveLetter Offset                                                                                                                 Size Type                                                                                                            
---------------  ----------- ------                                                                                                                 ---- ----                                                                                                            
2                T           16777216                                                                                                            5.58 GB Basic                                                                                                           


PS C:\WINDOWS\system32> Format-Volume -DriveLetter 'T' -FileSystem NTFS -NewFileSystemLabel 'Test' -AllocationUnitSize 4096
Format-Volume : Access Denied
Activity ID: {adc29ae6-3193-0002-4318-dbb09331d901}
At line:1 char:1
+ Format-Volume -DriveLetter 'T' -FileSystem NTFS -NewFileSystemLabel ' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (StorageWMI:ROOT/Microsoft/...age/MSFT_Volume) [Format-Volume], CimException
    + FullyQualifiedErrorId : StorageWMI 40001,Format-Volume

Если я изменю файловую систему, скажем, на FAT32, команда форматирования сработает. Для меня это не имеет смысла. Когда скрипт запущен от имени администратора.

Пример использования другой файловой системы...

PS C:\WINDOWS\system32> Format-Volume -DriveLetter 'T' -FileSystem FAT32 -NewFileSystemLabel 'Test' -AllocationUnitSize 4096

DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining    Size
----------- ------------ -------------- --------- ------------ ----------------- -------------    ----
T           TEST         FAT32          Fixed     Healthy      OK                      5.57 GB 5.57 GB

Если я точно такие же шаги через UI или командную строку говорю через diskpart, никакой ошибки. Любые предложения приветствуются.

решение1

На самом деле, это оказалось довольно извращенным сценарием. После некоторого обширного тестирования. Я действительно заставил UI (диспетчер дисков) в Explorer (диспетчер файлов) воспроизвести ошибки отказа в доступе. Казалось, PowerShell может вызывать проблему быстрее и проще. Какой-то процесс пытался получить исключительный контроль над рассматриваемым диском в фоновом режиме. Поэтому я отключил Defender, MalwareBytes, все приложения резервного копирования и даже убедился, что не запущен ни один процесс захвата точки восстановления, и проблема отказа в доступе исчезла в какой-то момент. Единственное, что я не пробовал, — это полную перезагрузку.

Раньше я полностью контролировал диск, о котором идет речь, или так я думал, полностью заменил все разрешения безопасности, взяв на себя полное владение и т. д., в ходе тестирования, но все еще имел проблему с отказом в доступе. Мне все еще нужно отследить конкретный процесс, который брал исключительный контроль над диском. Но, по крайней мере, это, похоже, проблема среды, а не проблема кода с Powershell или модулем Storage.

Я обнаружил еще одну странную проблему, некоторые USB-накопители, Initialize-Disk не срабатывает с ошибкой '...already initialized...'. Это задокументировано в разных местах. Однако типичное рекомендуемое исправление с помощью сброса через Reset-PhysicalDisk, похоже, не работает под Windows 11 последовательно для некоторых USB-накопителей. Кажется, некоторые USB-накопители просто ведут себя по-другому, неудивительно, я полагаю.

Похоже, что работает следующее (по крайней мере, с 15 с лишним USB-накопителями, которые у меня есть, а также с различными марками и моделями SSD и HDD-устройств, подключенных через eSATA, SATA и т. д.):

    #
    Clear-Disk -Number $theNumber -RemoveData -Confirm:$false

    # Documentation Suggests Reset, However Seems To Do Nothing On Some USB Storage Types...
    Reset-PhysicalDisk -FriendlyName (Get-PhysicalDisk -DeviceNumber $theNumber).FriendlyName 

    # Initalize-Disk Fails On Some USB Storage Types, Returns Initialization Is Already Complete...
    Initialize-Disk -Number $theNumber -PartitionStyle GPT -Confirm:$false -ErrorAction SilentlyContinue

    #
    New-Partition -DiskNumber $theNumber -UseMaximumSize -DriveLetter $theDrive | Out-Null

    #
    Format-Volume -DriveLetter $theDrive -FileSystem $theFileSystem -NewFileSystemLabel $theVolume -AllocationUnitSize $theSize -Force | Out-Null

Использование опции silentlycontinue — это своего рода хак, но мне еще предстоит найти способ проверить, инициализирован ли данный диск, но еще не отформатирован. Тест на 'RAW' недостаточен. У вас может быть диск при правильных обстоятельствах, онлайн, но не инициализированный, т. е. не RAW.

Если у кого-то есть фрагмент кода PowerShell для явного тестирования диска, который находится в состоянии квазиинициализации, но не RAW, возможно, стоит поделиться им здесь.

Связанный контент