PS C:\WINDOWS\system32> Get-PhysicalDisk | Sort-Object Number
Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
3 Seagate Backup+ Desk NA7E5JCS Unspecified False OK Healthy Auto-Select 2.73 TB
0 Crucial_CT500MX200SSD1 162112CAE0AE SSD False OK Healthy Auto-Select 465.76 GB
2 Seagate Expansion Desk NA4K7L4K Unspecified False OK Healthy Auto-Select 3.64 TB
PS C:\WINDOWS\system32> $psversionTable
Name Value
---- -----
PSVersion 5.1.19041.610
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.610
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Réponses
Trop de publicités?Pourquoi ce tri PowerShell ne fonctionne-t-il pas ?
Get-PhysicalDisk | Sort-Object Number
Il semble que votre syntaxe ne soit pas correcte.
Get-PhysicalDisk | Sort-Object -Property DeviceID -Descending
Get-PhysicalDisk | Sort-Object -Property DeviceID
Sorties :
Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
5 MSFT XVDD SSD False OK Healthy Auto-Select 29.38 GB
4 MSFT XVDD SSD False OK Healthy Auto-Select 109.91 GB
3 MSFT XVDD SSD False OK Healthy Auto-Select 11.34 GB
2 ST10000NM0086 HDD True OK Healthy Auto-Select 9.1 TB
1 Samsung SSD 860 EVO 2TB SSD False OK Healthy Auto-Select 1.82 TB
0 Samsung SSD 970 PRO 1TB SSD False OK Healthy Auto-Select 953.87 GB
Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
0 Samsung SSD 970 PRO 1TB SSD False OK Healthy Auto-Select 953.87 GB
1 Samsung SSD 860 EVO 2TB SSD False OK Healthy Auto-Select 1.82 TB
2 ST10000NM0086 HDD True OK Healthy Auto-Select 9.1 TB
3 MSFT XVDD SSD False OK Healthy Auto-Select 11.34 GB
4 MSFT XVDD SSD False OK Healthy Auto-Select 109.91 GB
5 MSFT XVDD SSD False OK Healthy Auto-Select 29.38 GB
Source : Exemple 1 : trier le répertoire actuel par nom
Get-PhysicalDisk ne renvoie pas réellement une propriété nommée Number
comme le montre la commande suivante :
Get-PhysicalDisk | Select-Object Number, FriendlyName, Size
Number FriendlyName Size
------ ------------ ----
MSFT XVDD 12179415040
MSFT XVDD 118010777600
MSFT XVDD 31548567552
Samsung SSD 970 PRO 1TB 1024209543168
ST10000NM0086 10000831348736
Samsung SSD 860 EVO 2TB 2000398934016
Alors que la commande suivante renvoie le résultat correct :
Get-PhysicalDisk | Select-Object DeviceID, FriendlyName,Size
DeviceID FriendlyName Size
-------- ------------ ----
3 MSFT XVDD 12179415040
4 MSFT XVDD 118010777600
5 MSFT XVDD 31548567552
0 Samsung SSD 970 PRO 1TB 1024209543168
2 ST10000NM0086 10000831348736
1 Samsung SSD 860 EVO 2TB 2000398934016
Utilisez toujours Get-Member pour être sûr d'obtenir les attributs bruts. par rapport à ce qui est affiché sur l'écran, dont nous savons tous qu'il est souvent manipulé.
(Get-PhysicalDisk)[0] |
Get-Member
# Results
<#
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/microsoft/windows/storage/MSFT_PhysicalDisk
Name MemberType Definition
---- ---------- ----------
...
AdapterSerialNumber Property string AdapterSerialNumber {get;}
AllocatedSize Property uint64 AllocatedSize {get;}
CanPool Property bool CanPool {get;}
Description Property string Description {get;}
DeviceId Property string DeviceId {get;}
EnclosureNumber Property uint16 EnclosureNumber {get;}
FirmwareVersion Property string FirmwareVersion {get;}
FriendlyName Property string FriendlyName {get;}
IsIndicationEnabled Property bool IsIndicationEnabled {get;}
IsPartial Property bool IsPartial {get;}
LogicalSectorSize Property uint64 LogicalSectorSize {get;}
Manufacturer Property string Manufacturer {get;}
Model Property string Model {get;}
ObjectId Property string ObjectId {get;}
OperationalDetails Property string[] OperationalDetails {get;}
OtherCannotPoolReasonDescription Property string OtherCannotPoolReasonDescription {get;}
PartNumber Property string PartNumber {get;}
PassThroughClass Property string PassThroughClass {get;}
PassThroughIds Property string PassThroughIds {get;}
PassThroughNamespace Property string PassThroughNamespace {get;}
PassThroughServer Property string PassThroughServer {get;}
PhysicalLocation Property string PhysicalLocation {get;}
PhysicalSectorSize Property uint64 PhysicalSectorSize {get;}
PSComputerName Property string PSComputerName {get;}
SerialNumber Property string SerialNumber {get;}
Size Property uint64 Size {get;}
SlotNumber Property uint16 SlotNumber {get;}
SoftwareVersion Property string SoftwareVersion {get;}
StoragePoolUniqueId Property string StoragePoolUniqueId {get;}
UniqueId Property string UniqueId {get;}
...
#>
De toute évidence, "Number" est une réécriture de DeviceId.
Malgré les apparences, les objets retournés par la cmdlet Get-PhysicalDisk n'ont pas de propriété "Number". Ce titre de colonne semble être placé sur une propriété connue sous le nom de DeviceID.
Cela a donc fonctionné :
PS C:\WINDOWS\system32> Get-PhysicalDisk | Sort-Object DeviceID
Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
0 Crucial_CT500MX200SSD1 162112CAE0AE SSD False OK Healthy Auto-Select 465.76 GB
2 Seagate Expansion Desk NA4K7L4K Unspecified False OK Healthy Auto-Select 3.64 TB
3 Seagate Backup+ Desk NA7E5JCS Unspecified False OK Healthy Auto-Select 2.73 TB
Il me semble qu'il s'agit d'un bogue ! Qu'en pensez-vous ?