New-StoragePool

New-StoragePool

Creates a new storage pool using a group of physical disks, and a specific storage subsystem exposed by a storage provider.

Syntax

Parameter Set: ByFriendlyName
New-StoragePool [-StorageSubSystemFriendlyName] <String[]> -FriendlyName <String> -PhysicalDisks <CimInstance[]> [-AsJob] [-CimSession <CimSession[]> ] [-EnclosureAwareDefault <Boolean> ] [-LogicalSectorSizeDefault <UInt64> ] [-OtherUsageDescription <String> ] [-ProvisioningTypeDefault <ProvisioningType> ] [-ResiliencySettingNameDefault <String> ] [-ThrottleLimit <Int32> ] [-Usage <Usage> ] [ <CommonParameters>]

Parameter Set: ByName
New-StoragePool -FriendlyName <String> -PhysicalDisks <CimInstance[]> -StorageSubSystemName <String[]> [-AsJob] [-CimSession <CimSession[]> ] [-EnclosureAwareDefault <Boolean> ] [-LogicalSectorSizeDefault <UInt64> ] [-OtherUsageDescription <String> ] [-ProvisioningTypeDefault <ProvisioningType> ] [-ResiliencySettingNameDefault <String> ] [-ThrottleLimit <Int32> ] [-Usage <Usage> ] [ <CommonParameters>]

Parameter Set: ByUniqueId
New-StoragePool -FriendlyName <String> -PhysicalDisks <CimInstance[]> -StorageSubSystemUniqueId <String[]> [-AsJob] [-CimSession <CimSession[]> ] [-EnclosureAwareDefault <Boolean> ] [-LogicalSectorSizeDefault <UInt64> ] [-OtherUsageDescription <String> ] [-ProvisioningTypeDefault <ProvisioningType> ] [-ResiliencySettingNameDefault <String> ] [-ThrottleLimit <Int32> ] [-Usage <Usage> ] [ <CommonParameters>]

Parameter Set: InputObject (cdxml)
New-StoragePool -FriendlyName <String> -InputObject <CimInstance[]> -PhysicalDisks <CimInstance[]> [-AsJob] [-CimSession <CimSession[]> ] [-EnclosureAwareDefault <Boolean> ] [-LogicalSectorSizeDefault <UInt64> ] [-OtherUsageDescription <String> ] [-ProvisioningTypeDefault <ProvisioningType> ] [-ResiliencySettingNameDefault <String> ] [-ThrottleLimit <Int32> ] [-Usage <Usage> ] [ <CommonParameters>]

Detailed Description

The New-StoragePool cmdlet creates a new storage pool using a group of physical disks, and a specific storage subsystem exposed by a storage provider.

Parameters

-AsJob

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-CimSession<CimSession[]>

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Aliases

Session

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-EnclosureAwareDefault<Boolean>

Specifies the default allocation policy for virtual disks created in an enclosure-aware storage pool. For example, an enclosure-aware subsystem could balance each data copy of the virtual disk across multiple physical enclosures such that each enclosure contains a full data copy of the virtual disk.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-FriendlyName<String>

Specifies a friendly name for the storage pool to be created. The friendly name may be defined by a user and is not guaranteed to be unique.

Aliases

StoragePoolFriendlyName

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-InputObject<CimInstance[]>

Accepts an object from the pipeline as input.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByValue)

Accept Wildcard Characters?

false

-LogicalSectorSizeDefault<UInt64>

Specifies the default logical sector size to use for virtual disks created in this pool. Valid logical sector size values (in bytes) for virtual disks created by using the Storage Spaces subsystem are 512 and 4096.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-OtherUsageDescription<String>

Specifies the usage description for the storage pool.

Aliases

StoragePoolOtherUsageDescription

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-PhysicalDisks<CimInstance[]>

Accepts one or more PhysicalDisk objects as input. The Physical Disk CIM objects represent the physical disks to be added to the storage pool.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-ProvisioningTypeDefault<ProvisioningType>

Specifies the default type of provisioning for virtual disks created in this pool. The acceptable values for this parameter are: Unknown, Fixed or Thin.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-ResiliencySettingNameDefault<String>

Specifies the default resiliency setting name for virtual disks created in this pool.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-StorageSubSystemFriendlyName<String[]>

Specifies the friendly name of the storage subsystem on which you want to create the storage pool.

Aliases

none

Required?

true

Position?

1

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-StorageSubSystemName<String[]>

Specifies the name of the storage subsystem (provided by the Storage Management) on which you want to create the storage pool.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-StorageSubSystemUniqueId<String[]>

Specifies the ID of the storage subsystem on which you want to create the storage pool

Aliases

StorageSubsystemId

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-ThrottleLimit<Int32>

Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Usage<Usage>

Specifies the usage setting for the storage pool. The acceptable values for this parameter are: Other, ReservedAsDeltaReplicaContainer, ReservedForComputerSystem, ReservedForLocalReplicationServices, ReservedForMigrationServices, ReservedForRemoteReplicationServices, ReservedForSparing, and Unrestricted.

Aliases

StoragePoolUsage

Required?

false

Position?

named

Default Value

Other

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see    about_CommonParameters (https://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • Microsoft.Management.Infrastructure.CimInstance#ROOT/Microsoft/Windows/Storage/MSFT_PhysicalDisk

    You can pipe one or more MSFT_PhysicalDisk objects to the PhysicalDisks parameter.

Outputs

The output type is the type of the objects that the cmdlet emits.

  • Microsoft.Management.Infrastructure.CimInstance#ROOT/Microsoft/Windows/Storage/MSFT_StoragePool

    This cmdlet returns an object representing the newly created storage pool.

Notes

  • The Microsoft.Management.Infrastructure.CimInstance object is a wrapper class that displays Windows Management Instrumentation (WMI) objects. The path after the pound sign (#) provides the namespace and class name for the underlying WMI object.

Examples

Example 1: Create a new storage pool using Storage Spaces

This example creates a new storage pool named CompanyData using the Storage Spaces subsytem, using the minimum parameters, and assuming that there are no other storage subsystems attached to the computer that have available disks.

This line uses the Get-PhysicalDisk cmdlet to get all PhysicalDisk objects than are not yet in a (concrete) storage pool, and assigns the array of objects to the $PhysicalDisks variable.

PS C:\> $PhysicalDisks = (Get-PhysicalDisk -CanPool $True)

This line creates a new storage pool using the $PhysicalDisks variable to specify the disks to include from the Storage Spaces subsystem (specified with a wildcard * to remove the need to modify the friendly name for different computers).

PS C:\> New-StoragePool -FriendlyName CompanyData -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $PhysicalDisks

Example 2: Create a new pool and set defaults for virtual disks

This example creates a new storage pool named CompanyData using the Storage Spaces subsystem and sets default values for virtual disk creation.

PS C:\> $PhysicalDisks = (Get-PhysicalDisk -CanPool $True) 
PS C:\> New-StoragePool -FriendlyName CompanyData -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $PhysicalDisks -ResiliencySettingNameDefault Mirror -ProvisioningTypeDefault Thin –Verbose

Example 3: Create a new storage pool, virtual disk, partition, and volume

This example creates a new storage pool, and then makes use of the pipeline to create a new virtual disk in the pool, initialize the disk, create a new partition on the disk, and then format the new partition (volume).

This line gets the storage subsystem object for the Storage Spaces subsystem, passes it to the Get-PhysicalDisk cmdlet, which then gets the physical disks in the specified subsystem that are available to add to a storage pool, and assigns these disks to the $PhysicalDisks variable.

PS C:\> $PhysicalDisks = Get-StorageSubSystem -FriendlyName "Storage Spaces*" | Get-PhysicalDisk -CanPool $True

This line creates a new storage pool using the physical disks in the $PhysicalDisks variable, and then passes the new storage pool down the pipeline.

PS C:\> New-StoragePool -FriendlyName CompanyData -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $PhysicalDisks |

This line creates a new virtual disk on the passed in storage pool, and then passes the new virtual disk down the pipeline.

PS C:\> New-VirtualDisk -FriendlyName UserData -Size 100GB -ProvisioningType Thin |

This line initializes the disk that was passed in, and then passes the disk down the pipeline.

PS C:\> Initialize-Disk -PassThru |

This line creates a new partition on the disk that was passed in, assigns it the next available drive letter, and then passes the partition down the pipeline.

PS C:\> New-Partition -AssignDriveLetter -UseMaximumSize |

This line formats the partition that was passed in.

PS C:\> Format-Volume

Get-PhysicalDisk

Get-StoragePool

Get-StorageSubsystem

Remove-StoragePool

Set-StoragePool