Как создать раздел 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