首页 > 系统相关 >windows10使用Powershell脚本自动初始化磁盘

windows10使用Powershell脚本自动初始化磁盘

时间:2023-08-08 13:00:55浏览次数:65  
标签:初始化 driveLetter 符号 windows10 使用 磁盘 驱动器 Powershell

如下为脚本内容:

1 首先使用get-disk命令检测未被初始化的磁盘,磁盘为被初始化属性会为raw,使用rawdisk变量获取未被初始化的磁盘。

2 判断rawdisk是否有值,如果有,则存在未被初始化磁盘,条件为真,进行下一步。如果空值,则说明系统没有未被初始化的磁盘,输出:没有找到未格式化的磁盘或 RAW 参数不为 True。

3 将磁盘初始化为GPT格式,windows默认MBR格式不支持超过2TB的磁盘,所以建议使用GPT格式,实现可以在windows上使用超过2T的数据盘。

3 在初始化的磁盘上面创建新的分区,这里就默认使用全部空间的。

4 为新建的分区分配驱动器符号,首先进行了一个判断,如果自定义设置的驱动器盘符被占用了,系统则自动顺延未被使用的驱动器符号。如果未被占用,则使用自定义设置的,这里设置了Q盘符

5 脚本运行成功后,会弹出格式化磁盘窗口,无需理会即可,退出窗口即可,然后进入我的电脑即可发现新初始化的磁盘。

$rawDisk = Get-Disk | Where-Object { $_.OperationalStatus -eq 'Offline' -and $_.PartitionStyle -eq 'RAW' }

if ($rawDisk) {
    $diskNumber = $rawDisk.Number

    # 将磁盘进行初始化为 GPT 格式
    Initialize-Disk -Number $diskNumber -PartitionStyle GPT

    # 在磁盘上创建新分区
    $partition = New-Partition -DiskNumber $diskNumber -UseMaximumSize -AssignDriveLetter
    $driveLetter = $partition.DriveLetter
    
    if ($driveLetter -ne 'H') {
        # 检查驱动器符号是否已被使用
        $isDriveLetterUsed = (Get-Partition | Where-Object { $_.DriveLetter -eq 'H' }).Count -gt 0

        if ($isDriveLetterUsed) {
            Write-Host "驱动器符号 H 已被使用,寻找顺延的未使用的驱动器符号。"
            
            # 查找未被使用的驱动器符号
            $availableDriveLetters = [System.IO.DriveInfo]::GetDrives() | Where-Object { $_.DriveType -eq 'NoRootDirectory' } | ForEach-Object { $_.Name.Substring(0,1) }
            $availableDriveLetters = $availableDriveLetters | Where-Object { $_ -ge 'I' }
            
            if ($availableDriveLetters.Count -gt 0) {
                $nextAvailableDriveLetter = $availableDriveLetters[0]

                Write-Host "将驱动器符号修改为 $nextAvailableDriveLetter。"
                Set-Partition -DriveLetter $driveLetter -NewDriveLetter $nextAvailableDriveLetter
                $driveLetter = $nextAvailableDriveLetter
            } else {
                Write-Host "没有找到顺延的未使用的驱动器符号。"
            }
        } else {
            Write-Host "驱动器符号 Q 未被使用,将驱动器符号修改为 。"
            Set-Partition -DriveLetter $driveLetter -NewDriveLetter 'H'
            $driveLetter = 'Q'
        }
    }

    # 格式化分区为 NTFS 文件系统
    Format-Volume -DriveLetter $driveLetter -FileSystem NTFS -Confirm:$false
} else {
    Write-Host "没有找到未格式化的磁盘或 RAW 参数不为 True。"
}


标签:初始化,driveLetter,符号,windows10,使用,磁盘,驱动器,Powershell
From: https://blog.51cto.com/dengpeng2025/7007639

相关文章

  • Siemens 博途DB块不重新初始化,怎么进行下载
    在博途中进行编程时,经常会见到这种情况。修改了DB数据块之后,需要重新初始化之后才能进行下载。如图所示:我们知道这种情况下载程序,在DB块中所有的参数都会初始化,即数据清空了。如果说这个DB块保存了一些伺服、变频器的速度或者位置数据,那么全部都要重新设置一遍,非常的耗......
  • Microsoft 365解决方案:如何通过Powershell启用Communication Sites的Rating feature
    博客链接:https://blog.51cto.com/u_13637423SharePoint中的Rating功能允许用户对列表项进行评分并提供反馈,从而增强团队内部的协作和决策能力。虽然此功能在SharePointTeamsSite中默认可用,但在CommunicationSite中默认不启用,如下所示:但如果您希望在CommunicationSite的列表中......
  • C语言定义并初始化一个二维数组(利用二级指针)
    C语言定义并初始化一个二维数组(利用二级指针)1.代码如下#include<stdio.h>#include<stdlib.h>intmain(){//m,n表示数组的行数和列数intm,n;scanf("%d%d",&m,&n);//p是一个二级指针,使用malloc函数初始化。注意p指向的是一个指针,所以sizeof操作......
  • C语言定义并初始化一个二维数组(利用指针数组)
    C语言定义并初始化一个二维数组(利用指针数组),可以实现二位数组的每一行的元素个数不同1.代码如下#include<stdio.h>#include<stdlib.h>intmain(){//arr是一个指针数组,即这个数组的所有元素都是指针,每一个元素都指向一个int型数组,每一个int型数组的长度可以不同......
  • Docker-Compose 一键部署mysql及初始化sql脚本
    1.部署前提:服务器具备docker和docker-compose环境2.镜像准备:-mysql:DockerFile文件:FROMmysql:5.7.41COPY*.sql/docker-entrypoint-initdb.d/初始化sql脚本xxx.sql放在DockerFile文件同级目录下执行指令:dockerbuild-fdockerfile_mysql-tmysql:1.0.0.......
  • git初始化裸仓库和更改仓库名
    1)初始化裸仓库举个例子:初始化裸仓库,用于做为git服务端共享仓库gitinit--bare<repo>使用“普通库”代指用"gitinit"命令创建的git库;使用“裸库”代指用"gitinit--bare"命令创建的git库;裸仓库适用于远程仓库,裸仓库可以直接作为服务器仓库供各开发者push、pull数据,实现......
  • 将数组初始化为0并且逆置
    voidinit(int*arr,intsz){ inti=0; for(i=0;i<sz;i++) { arr[i]=0; }}voidprint(intarr[],intsz){ inti=0; for(i=0;i<sz;i++) { printf("%d",arr[i]); } printf("\n");}voidreverse(intarr[],intsz){ intleft=......
  • 【转载】C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
    【结论】一、在有些情况下,必须使用初始化列表。特别是const和引用数据成员被初始化时。二、从效率方面来说,对于内置类型或复合类型,差异不会太大,但对于非内置数据类型,差异还是很明显的【具体参考】C/C++通过初始化列表和构造函数内赋值初始化成员变量的区别_Zju_Jemery的博客-......
  • Ant Design Pro项目一初始化就报a标签嵌套a标签错误<a> cannot as a descendant of <a
    前情公司经常需要做一些后台管理页面,我们选择了AntDesignPro,它是基于AntDesign和umi的封装的一整套企业级中后台前端/设计解决方案。坑位按官方文挡一步步下来,项目启动后发现控制台就有一个报错,报错截图如下:Why?从报错的提示看是项目出现了a标签嵌套a标签的情况,最......
  • 记录使用uview的tabs组件初始化渲染下划线移位问题解决
    问题描述:初始化渲染后tabs的下划线没有居中对其,出现异位。问题分析: 网上很多大佬分析过出现原因了记录下解决的过程: 在各个论坛搜集到解决方案都暂时无效 有使用v-if重新渲染的  有给类赋值偏移值的 有强行转换px的因为各种原因这些方法在自己身上没有奏效所以记......