9

我有一台配置有多个磁盘的服务器。一个用于操作系统,一个用于程序等,其余的将安装到空的 NTFS 文件夹。

Disk 0: C:
Disk 1: G:
Disk 2: G:\Folder01\
Disk 3: G:\Folder02\

这通过 GUI 相当简单:https ://technet.microsoft.com/en-us/library/cc753321.aspx

但是,我需要自动化,所以我需要弄清楚如何使用 PowerShell 来做到这一点。我遇到了几个死胡同:

我以为我在Get-DiskInitialize-DiskNew-Partition方面取得了一些进展

$Disk = Get-Disk 2
$Disk | Initialize-Disk -PartitionStyle MBR
$Disk | New-Partition -UseMaximumSize -MbrType IFS
$Partition = Get-Partition -DiskNumber $Disk.Number

从这里开始,我希望做类似的事情:

New-Volume $Partition -FriendlyName Folder01 -AccessPath F:\Folder01 -FileSystem NTFS

但这不会产生任何输出,而且我注意到之前创建分区时,它也创建了一个卷。

我认为New-Volume可能是错误的命令,因为帮助表明输入对象应该是 MSFT_StoragePool 对象。

我尝试使用以下命令走这条路:Get-PhysicalDiskNew-StoragePoolGet-StoragePool

$Disk = Get-PhysicalDisk -FriendlyName PhysicalDisk2
New-StoragePool -FriendlyName Pool2 -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $Disk
$Pool = Get-StoragePool Pool2
New-Volume -FriendlyName Folder01 -AccessPath G:\Folder01 -FileSystem NTFS -InputObject $Pool

但是此时我只收到一条无效参数的错误消息,我认为这很奇怪,因为我能够使用 Get-Member 来确认 $Pool 是一个 MSFT_StoragePool。

我还注意到,在创建该存储池后,我的磁盘从磁盘管理中消失了,并且不再显示 Get-Disk

我认为这表明存储池与我实际想要做的完全不同。

如何使用 Powershell 将驱动器分配给 NTFS 文件夹?

4

4 回答 4

16

我需要的命令行开关是Add-PartitionAccessPath

我通过磁盘 2 上的 GUI 按照我想要的方式进行设置,在磁盘 3 上创建了一个分区,然后仔细比较了属性。关键在这里:

(Get-Partition -DiskNumber 2).AccessPaths
(Get-Partition -DiskNumber 3).AccessPaths

Disk2 有一个额外的 AccessPath,这让我翻阅了许多 MSDN 文章寻找一种方法,直到我最终发现已经有一个命令。

以下命令完成了交易:

$Partition | Add-PartitionAccessPath -AccessPath "G:\Folder01"

作为参考,这是完整的解决方案:

$Disk = Get-Disk 3
# $Disk | Clear-Disk -RemoveData -Confirm:$false
$Disk | Initialize-Disk -PartitionStyle MBR
$disk | New-Partition -UseMaximumSize -MbrType IFS
$Partition = Get-Partition -DiskNumber $Disk.Number
$Partition | Format-Volume -FileSystem NTFS -Confirm:$false
New-Item -ItemType Directory -Path "G:\Folder01"
$Partition | Add-PartitionAccessPath -AccessPath "G:\Folder01"
于 2015-08-24T23:49:50.373 回答
2

如何使用命令行将驱动器分配给 Powershell 中的 NTFS 文件夹:

cmd /c 'subst G: "C:\Folder1"'

注意:资源管理器显示的文件夹大小与 C: 相同。

于 2015-08-24T22:17:44.710 回答
1

如果您正在考虑将文件放入某个文件夹,并希望它们最终存储在某个磁盘上,那么MOUNTVOL.

要查找驱动器/卷名称:

MOUNTVOL

要删除驱动器号并改为安装在空的 NTFS 文件夹上:

mountvol e: /d
mountvol c:\<path> <volume name> 
eg. mountvol c:\fakedisk\ \\?\Volume{########-####-####-####-############}\

因此,在上面的示例中,每次写入 c:\fakedisk\ 文件夹时,数据最终都会存储在以前的 e: 驱动器(磁盘/设备)中。这与subst“将路径与驱动器号关联”相反,因此将数据写入驱动器将存储在该路径/文件夹中。

在 Win 10 CMD 上测试

于 2021-02-05T15:18:00.463 回答
0

在运行此命令之前确保该文件夹存在:

$Partition | Add-PartitionAccessPath -AccessPath "G:\Folder01"
于 2018-05-29T19:32:47.157 回答