提供池,虚拟光盘和共享

时间:2017-08-09 09:14:47

标签: powershell windows-server-2012-r2 hyper-v

我开始自己学习PowerShell。在其中一本书(Windows Server 2012 R2,实现和维护)中,我完成了创建脚本的任务,该脚本在运行后将在新创建的虚拟主机上创建存储池,虚拟光盘和新共享。

根据书籍说明,这就是我已经做过的事情:

New-StoragePool -FriendlyName "Pool" -StorageSubSystemFriendlyName (Get-StorageSubSystem).FriendlyName -PhysicalDisk (Get-PhysicalDisk | where CanPool -eq True) -ProvisingTypeDefault Thin -ResiliencySettingNameDefault Mirror

New-VirtualDisk -FriendlyName "vDisk1" -StoragePoolFriendlyName "Pool" -Size 5TB

New-VirtualDisk -FriendlyName "vDisk2" -StoragePoolFriendlyName "Pool" -Size 10TB

New Partition -DiskNumber(Get-Disk | where BusType -eq Spaces).Number -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Confirm:$false

现在我想通过New-Item函数为新创建的虚拟磁盘创建共享文件夹。问题是我不知道如何为多个磁盘创建路径,而-AssignDriveLetter的参数New Partition会自动创建驱动器号。因为那我不知道驱动器号。因此,我不知道如何在Path中设置变量New-Item

1 个答案:

答案 0 :(得分:1)

我建议采用一般方法: 在配置池和磁盘时使用变量,以便在接下来的步骤中重用它们,并且会引用您创建的特定对象:

$NewPartitions = New-Partition -DiskNumber(Get-Disk | where BusType -eq Spaces).Number -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Confirm:$false

$NewPartitions变量将包含新分区的数组及其驱动器号,您可以使用foreach每次循环执行New-Item进行迭代:

$NewFolders = foreach ($DriveLetter in ($NewPartitions.DriveLetter))
 {
  New-Item -Type Directory -Path ($DriveLetter+":\share")
 }

这将产生一个名为" share"的文件夹。在每个驱动器上,您可能希望使用相同的策略将其传递到New-SmbShare cmdlet。 $NewFolders.FullName包含新创建的文件夹的完整路径。