Как создать раздел EFI с помощью PowerShell?

Я хотел бы автоматизировать сценарий, который создает раздел EFI.

В настоящее время один шаг выполняется вручную и требует запуска DISKPART и выполнения этих команд:

create partition efi size=100 
format fs=fat32 quick label=SYSTEM 
assign letter=S

Как я могу получить тот же результат, используя PowerShell? Я не видел ни одного параметра в командлете New-Partition для создания раздела EFI.

2 ответа

Решение

Я подозреваю, что это будет эквивалент в PowerShell:

New-Partition -DiskNumber 0 -Size 100MB -GptType "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}" -DriveLetter "S"
Format-Volume -FileSystem FAT32 -NewFileSystemLabel "SYSTEM" -DriveLetter "S" -Force

Измените в соответствии с вашими потребностями.

Обратите внимание, что вам нужно выбрать диск, прежде чем вы сможете создать раздел.

Читать diskpart /?, используйте:

Microsoft DiskPart syntax:
        diskpart [/s <script>] [/?]

        /s <script> - Use a DiskPart script.
        /?          - Show this help screen.

Обратите внимание, что сценарий DiskPart представляет собой простой текстовый файл, в который помещаются команды diskpart (например, одна команда на строку) MyDiskpart.txt перечислено ниже.

diskpart /s MyDiskpart.txt

Ответ: последняя команда, которую вы можете запустить с повышенными powershell сеанс, а также с повышенного cmd сеанс ("диск-часть" всегда требует повышения прав).

Приложение:

Более того, Diskpart принимает входные данные из канала ('|'), а также из < перенаправление так, чтобы следующее cmd Команды эквивалентны:

diskpart /s MyDiskpart.txt
diskpart<MyDiskpart.txt
type MyDiskpart.txt|diskpart

Последние команды протестированы с использованием следующего скрипта diskpart:

==> type MyDiskpart.txt
list disk
list volume
select disk 1
list partition

Более того, вам не нужно создавать файл сценария diskpart; следующие .bat Скрипт отображает детали системного тома (выбирая том № динамически):

@ECHO OFF
SETLOCAL EnableExtensions

:check_permissions
echo Administrative permissions required. Detecting permissions...
net session >nul 2>&1
if %errorLevel% == 0 (
    echo Success: Administrative permissions confirmed.
) else (
    echo Failure: Current permissions inadequate.
    goto :endlocal
)

:do_the_job
for /f "tokens=2" %%a in ('echo list volume ^| diskpart ^| findstr System') do (
    (
        echo select volume %%a
        echo detail volume
    ) | diskpart
)
echo DONE
:endlocal
pause
Другие вопросы по тегам