2 votes

Comment créer une partition EFI à l'aide de PowerShell ?

Je voudrais automatiser un script qui crée une partition EFI.

Actuellement, une étape est manuelle et nécessite de lancer DISKPART et d'exécuter ces commandes :

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

Comment puis-je obtenir le même résultat en utilisant PowerShell ? Je n'ai vu aucune option dans la commande New-Partition cmdlet pour créer une partition EFI.

5voto

ofrommel Points 1482

Je suppose que ce serait l'équivalent en PowerShell :

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

Modifiez-le le cas échéant pour l'adapter à votre cas d'utilisation.

1voto

JosefZ Points 1465

Veuillez noter que vous devez sélectionner un disque avant de pouvoir créer une partition.

Lire diskpart /? , utiliser :

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

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

Il convient de noter que un DiskPart script est un simple fichier texte dans lequel les commandes diskpart sont placées (une commande par ligne), par exemple MyDiskpart.txt énumérés ci-dessous.

diskpart /s MyDiskpart.txt

Réponse : Cette dernière commande peut être exécutée à partir d'un poste élevé. powershell ainsi qu'à partir d'une session cmd (diskpart nécessite toujours une élévation).

Addendum :

En outre, Diskpart accepte l'entrée d'un ('|') ainsi que de < redirection de sorte que les éléments suivants cmd sont équivalentes :

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

Ces dernières commandes ont été testées à l'aide des éléments suivants diskpart script :

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

De plus, il n'est pas nécessaire de créer un diskpart script fichier ; les éléments suivants .bat script affiche les détails du volume du système (en sélectionnant volume # de manière dynamique) :

@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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X