Files
Backup/_NDGOV_WindowsTeam/ITD.Infra-VMware.Administration/Scripts/HPEILO-Certificates-V2.ps1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

88 lines
2.6 KiB
PowerShell

$servers = @"
itdvmbisvdi05lo.nd.gov
itdvmbisvdi06lo.nd.gov
"@
$servers = ConvertTo-Array -MultiLineString $servers
# validate DNS is configured
ForEach($server in $servers){
Resolve-DnsName -Name $server
}
#ServerHardware.mpHostInfo.mpIpAddresses
# requires powershell 5.1 as of 2023/02/09
# Generate CSRs
ForEach ($server in $servers) {
$csr = $Null
$connection = Connect-HPEiLO $server -Credential $iLOCred -DisableCertificateAuthentication
$FQDN = $connection.Hostname
If($FQDN -notlike "itdvm*"){
$FQDN = ((Get-HPEiLOServerInfo -Connection $connection).ServerName.split('.')[0] + 'lo' + '.nd.gov')
}
$Hostname = $FQDN.split('.')[0]
Start-HPEiLOCertificateSigningRequest -Connection $connection -State "North Dakota" -Country "US" -City "Bismarck" -Organization "State of North Dakota" -OrganizationalUnit "NDIT" -CommonName $FQDN
do {
$csr = (Get-HPEiLOCertificateSigningRequest -Connection $connection -ErrorAction SilentlyContinue).CertificateSigningRequest.TrimEnd()
Write-Warning ((Get-Date).tostring() + " pausing for 5 seconds")
Start-Sleep -Seconds 5
} while ( $csr -eq $null )
$csr | Set-Content "D:\iLO\CSRs\$FQDN-csr.txt"
Disconnect-HPEiLO -Connection $connection
}
$CsrList = [System.Collections.ArrayList]@()
ForEach($server in $servers){
$obj=[PSCustomObject]@{
'Server' = $Server
'CSR' = (Get-Content "D:\iLO\CSRs\$server-csr.txt" -Raw);
}
$null = $CsrList.Add($obj)
}
$CsrList | group-object CSR
# If any appear with count not equal to 1, something is broken
ForEach ($server in $servers){
Write-Warning "$server csr to clipboard"
Get-Content "D:\iLO\CSRs\$server-csr.txt" | Set-Clipboard
Pause
}
ForEach ($server in $servers){
$certfile = $Null
$cert = $Null
$connection = Connect-HPEiLO $server -Credential $iloCred -DisableCertificateAuthentication
$FQDN = $connection.Hostname
If($FQDN -notlike "itdvm*"){
$FQDN = ((Get-HPEiLOServerInfo -Connection $connection).ServerName.split('.')[0] + 'lo' + '.nd.gov')
}
$Hostname = $FQDN.split('.')[0]
$certfile = ($hostname) + "_nd_gov_cert.cer"
$cert = (Get-Content "D:\iLO\Certs\$certfile" -Raw).Replace("`r`n", "`n").Trim()
Import-HPEiLOCertificate -Certificate $cert -Connection $connection -Verbose
Disconnect-HPEiLO -Connection $connection
}
# Refresh server hardware, in powershell 7
# Connect-OVMgmt
$OVServers = Get-OVServer | Sort-Object ServerName
Foreach($OVServer in $OVServers){
Write-Warning ("Start " + $OVServer.ServerName)
$OVServer | Update-OVServer -Async
Start-Sleep -Seconds 15
}
#######################