Você pode atribuir esse disco "objeto" a uma variável. Com essa variável, você pode executar as operações na própria variável, sem precisar de um FriendlyName ou um SerialNumber
Detalhes
No meu caso, eu tinha não FriendlyName
, nem qualquer SerialNumber
:
FriendlyName CanPool OperationalStatus HealthStatus Usage Size
------------ ------- ----------------- ------------ ----- ----
PhysicalDisk1 False OK Healthy Auto-Select 1.82 TB
PhysicalDisk3 False OK Healthy Auto-Select 1.82 TB
PhysicalDisk4 False OK Healthy Auto-Select 1.82 TB
PhysicalDisk0 False OK Healthy Auto-Select 111.79 GB
PhysicalDisk8 False OK Healthy Auto-Select 1.82 TB
PhysicalDisk2 False OK Healthy Auto-Select 465.76 GB
False Lost Communication Warning Retired 930.75 GB
PhysicalDisk6 False OK Healthy Auto-Select 930.75 GB
PhysicalDisk9 False OK Healthy Auto-Select 930.75 GB
PhysicalDisk7 False OK Healthy Auto-Select 1.82 TB
PhysicalDisk5 False OK Healthy Auto-Select 1.82 TB
A coisa mais fácil que eu poderia digitar era que o OperationalStatus dizia Lost Communication
:
#Single out the disk that has lost communication
Get-PhysicalDisk | Where-Object { $_.OperationalStatus -eq 'Lost Communication' }
A partir daí, posso atribuir esse disco a uma variável:
#Assign the missing disk to a variable
$missingDisk = Get-PhysicalDisk | Where-Object { $_.OperationalStatus -eq 'Lost Communication' }
Agora que tenho um objeto variável, posso marcar esse disco como desativado:
#tell the storage pool that the disk has been retired:
$missingDisk | Set-PhysicalDisk -Usage Retired
E, para finalizar, repare todos os volumes no espaço de armazenamento afetados:
# To Repair all Warning Volumes
Get-VirtualDisk | Where-Object –FilterScript {$_.HealthStatus –Eq 'Warning'} | Repair-VirtualDisk
Você pode confirmar que um disco virtual está sendo reparado, pois seu OperationStatus é InService
:
#Disks will show as 'InService' to let us know that they're currently being repaired
Get-VirtualDisks
FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
Three-way mirror Mirror InService Warning False 10 TB
PooledParityDisk Parity InService Warning False 15 TB
E, finalmente, você pode monitorar o progresso do reparo:
#Monitor the percentage of the repair
Get-StorageJob
Name ElapsedTime JobState PercentComplete IsBackgroundTask
---- ----------- -------- --------------- ----------------
Regeneration 00:00:00 Running 40 True
Regeneration 00:00:00 New 0 True
Agradecimentos a Matthew Hodgkins . ( arquivo )
p.s. a pessoa que pensa que o PowerShell é uma boa ideia deve ser filmada