使用Powershell将EBS卷附加到Windows EC2

Jon*_*ubb 8 powershell amazon-ec2

我已经看到很多关于添加EBS卷Linux的问题,但不是Windows.假设您发现磁盘空间不足(可能是通过CloudWatch)并且想要添加另一个EBS卷.可以用Powershell完成吗?

我不想使用diskpart.exe,因为解析其结果更困难(不是本机Powershell命令).

Jon*_*ubb 12

希望这有助于那里的人.AWS的东西很简单,但我花了一些时间来追踪Windows使用它的所有东西.

为简洁起见,此答案已被删除,因此请确保:

  1. 您已经处理了AWS Powershell API例外
  2. 在尝试将它们附加到EC2之前,您的卷是"可用的"
  3. 一旦你附上它,它就会显示"正在使用"

2和3可以通过Get-EC2VolumeAPI 完成.

创建EBS卷:

$volume = New-EC2Volume -Size $sizeInGB -AvailabilityZone $az -VolumeType $vType
Run Code Online (Sandbox Code Playgroud)

将卷附加到EC2:

Add-EC2Volume -InstanceId $toInstanceId -VolumeId $volume.Id -Device $devId -Region $region
Run Code Online (Sandbox Code Playgroud)

Windows方面:

找到你刚刚附上的ebs音量

$diskNumber = (Get-Disk | ? { 
    ($_.OperationalStatus -eq "Offline") -and ($_."PartitionStyle" -eq "RAW") }).Number
Run Code Online (Sandbox Code Playgroud)

初始化磁盘

Initialize-Disk -Number $diskNumber -PartitionStyle "MBR"
Run Code Online (Sandbox Code Playgroud)

创建最大空间分区,分配驱动器号,使"活动"

$part = New-Partition -DiskNumber $diskNumber -UseMaximumSize -IsActive -AssignDriveLetter
Run Code Online (Sandbox Code Playgroud)

格式化新驱动器

Format-Volume -DriveLetter $part.DriveLetter -Confirm:$FALSE
Run Code Online (Sandbox Code Playgroud)

请享用!

  • 大!我使用此答案来创建以下脚本,以便在user_data脚本中使用:https://gist.github.com/anderssonjohan/fa88e6ddf883fd161698caac68912394它与terraform一起使用,但是它只是一个普通的user_data init脚本,因此可以在不使用terraform的情况下使用好。 (2认同)