Я хотел бы автоматизировать скрипт, создающий раздел EFI.
В настоящее время один шаг выполняется вручную и требует запуска DISKPART и выполнения следующих команд:
create partition efi size=100
format fs=fat32 quick label=SYSTEM
assign letter=S
Как я могу получить тот же результат с помощью PowerShell? Я не видел в командлете New-Partition опции для создания раздела EFI.
Я подозреваю, что это будет эквивалент в 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» всегда требует повышения прав).
Дополнение:
Более того, Diskpart
принимает ввод от pipe ('|'), а также от <
перенаправление так что следующие 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