-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHPEDiskInfo.ps1
78 lines (70 loc) · 3.48 KB
/
HPEDiskInfo.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Import HPE OneView PowerShell module if necessary
# Import-Module HPOneView.####
# Get all servers
$servers = Get-OVServer
# Initialize an array to collect drive data
$driveData = @()
# Loop through each server
foreach ($server in $servers) {
# Retrieve the server's URI
$serverUri = $server.uri
# Check if the server model is Gen10 or Gen11
if ($server.Model -like "*Gen1*") {
# Fetch disk drive data for Gen10/Gen11 server
$drives = (Send-OVRequest -uri "$serverUri/localStorageV2").Data.Drives
} elseif ($server.Model -match "Gen9") {
# Fetch disk drive data for Gen9 server
$drives = (Send-OVRequest -uri "$serverUri/localStorage").Data.PhysicalDrives
} else {
Write-Output "Server $($server.ServerName) has an unsupported model: $($server.Model)"
continue
}
# Collect drive details for each drive
foreach ($drive in $drives) {
if ($server.Model -like "*Gen1*") {
# Gen10/Gen11 drive details, including Revision
$driveData += [PSCustomObject]@{
ServerName = $server.ServerName
Id = $drive.Id
Name = $drive.Name
Model = $drive.Model
CapacityGB = [math]::round($drive.CapacityBytes / 1GB, 2)
MediaType = $drive.MediaType
SerialNumber = $drive.SerialNumber
Status = $drive.Status.State
Health = $drive.Status.Health
PredictedMediaLifeLeftPercent = $drive.PredictedMediaLifeLeftPercent
Protocol = $drive.Protocol
CapableSpeedGbs = $drive.CapableSpeedGbs
NegotiatedSpeedGbs = $drive.NegotiatedSpeedGbs
Revision = $drive.Revision # Added Revision for Gen10/11
}
} elseif ($server.Model -match "Gen9") {
# Gen9 drive details with FirmwareVersion simplified
$firmwareVersion = if ($drive.FirmwareVersion.Current -and $drive.FirmwareVersion.Current.VersionString) {
$drive.FirmwareVersion.Current.VersionString
} else {
"N/A"
}
$driveData += [PSCustomObject]@{
ServerName = $server.ServerName
Location = $drive.Location
Model = $drive.Model
CapacityGB = [math]::round($drive.CapacityMiB / 1024, 2)
MediaType = $drive.MediaType
SerialNumber = $drive.SerialNumber
Status = $drive.Status.State
Health = $drive.Status.Health
EncryptedDrive = $drive.EncryptedDrive
FirmwareVersion = $firmwareVersion
DiskDriveUse = $drive.DiskDriveUse
}
}
}
}
# Display data in an interactive grid view
$driveData | Out-GridView -Title "Server Drive Information"
# Export data to CSV
$csvFilePath = "C:\Scripts\ServerDriveInfo.csv"
$driveData | Export-Csv -Path $csvFilePath -NoTypeInformation -Force
Write-Output "Data exported to CSV at $csvFilePath"