powershell是管理windows共享存储的首选工具:先验证物理磁盘canpool为true及存储子系统名称,再创建带精简配置与镜像弹性的存储池和虚拟磁盘,接着初始化gpt分区、格式化ntfs并分配盘符,最后新建smb共享并启用abe等安全策略。
powershell 是管理 windows 共享存储环境的首选工具,尤其在 server 2012 及以上版本中,smbshare 和 storage 模块提供了原生、可靠、可脚本化的控制能力。它不依赖图形界面,适合批量部署、灾备恢复和自动化运维。
验证物理磁盘与存储子系统
配置共享存储前,需确认底层硬件就绪:
- 运行
Get-PhysicalDisk | Where-Object CanPool -eq $true,确保至少两块磁盘的CanPool属性为True(即未被占用、健康且支持池化) - 执行
(Get-StorageSubsystem).FriendlyName获取当前存储子系统的友好名称,这是创建存储池时必需的参数 - 注意:若返回为空,说明系统未识别到支持 S2D 或 Storage Spaces 的控制器,可能需启用相关功能或检查驱动
创建存储池与虚拟磁盘
使用 PowerShell 构建弹性、可扩展的存储层:
- 新建存储池:
New-StoragePool -FriendlyName "Pool2" -StorageSubSystemFriendlyName (Get-StorageSubsystem).FriendlyName -PhysicalDisks (Get-PhysicalDisk | Where-Object CanPool -eq $true) -ProvisioningTypeDefault Thin -ResiliencySettingNameDefault Mirror - 基于该池创建虚拟磁盘:
New-VirtualDisk -FriendlyName "vDisk1" -StoragePoolFriendlyName "Pool2" -Size 5TB;同理可建 vDisk2(10 TB) - 用
Get-VirtualDisk核对大小与状态;再用Get-Disk | Where-Object BusType -eq Spaces确认磁盘已识别为 Storage Spaces 类型(初始为脱机 + RAW)
初始化磁盘并格式化为共享卷
虚拟磁盘需完成初始化、分区、格式化和挂载,才能用于文件共享:
- 批量初始化为 GPT:
(Get-Disk | Where-Object BusType -eq Spaces) | Initialize-Disk -PartitionStyle GPT - 创建最大分区并自动分配盘符:
New-Partition -DiskNumber (Get-Disk | Where-Object BusType -eq Spaces).Number -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Confirm:$false - 执行后通过
Get-Volume查看新卷的驱动器号(如 D:、E:),这是后续共享路径的基础
创建 SMB 共享并启用安全策略
将本地卷发布为网络共享,并按需加固访问控制:
- 新建共享:
New-SmbShare -Name "Share1" -Path "D:\Shares\Folder1" -Description "Team Data Share" - 为另一共享启用基于访问的枚举(ABE),隐藏用户无权查看的文件夹:
Set-SmbShare -Name "Share2" -AccessBasedEnumerationMode Enabled - 验证共享列表:
Get-SmbShare;检查共享权限:Get-SmbShareAccess -Name "Share1" - 如需精细控制,配合
Grant-SmbShareAccess或 NTFS 权限(icacls或Set-Acl)协同设置










