Como criar uma partição EFI usando o PowerShell?

1

Eu gostaria de automatizar um script que cria uma partição EFI.

Atualmente, um passo é manual e requer que você inicie o DISKPART e execute estes comandos:

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

Como posso obter o mesmo resultado usando o PowerShell? Eu não vi nenhuma opção no Cmdlet New-Partition para criar uma partição EFI.

    
por SuperJMN 26.05.2018 / 12:12

2 respostas

2

Eu suspeito que isso seria o equivalente no PowerShell:

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

Modifique conforme apropriado para se adequar ao seu caso de uso.

    
por 27.05.2018 / 01:07
1

Por favor, note que você precisa selecionar um disco antes de criar uma partição.

Leia diskpart /? , use:

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

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

Observe que um script DiskPart é um arquivo de texto simples onde os comandos diskpart são colocados em (um comando por linha), por exemplo MyDiskpart.txt listado abaixo.

diskpart /s MyDiskpart.txt

Resposta : O último comando que você pode executar a partir de uma sessão powershell elevada, bem como de uma sessão cmd elevada (˙diskpart˙ sempre requer elevação).

Adendo :

Além disso, Diskpart aceita entrada de um canal ('|'), bem como do < redirecionamento para que os seguintes comandos cmd sejam equivalentes:

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

Os últimos comandos testados usando o seguinte script diskpart :

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

Além disso, você não precisa criar um arquivo de script diskpart ; o script .bat a seguir exibe detalhes do volume do sistema (selecionando volume # dinamicamente):

@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
    
por 26.05.2018 / 19:34