Windows

如何使用 PowerShell 創建 EFI 分區?

  • November 24, 2020

我想自動化創建 EFI 分區的腳本。

目前,一步是手動的,需要啟動 DISKPART 並執行以下命令:

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

如何使用 PowerShell 獲得相同的結果?我在 New-Partition cmdlet 中沒有看到任何用於創建 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接受來自管道 (’|’) 以及來自<重定向的輸入,因此以下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

引用自:https://serverfault.com/questions/913894