我試圖制作一個powerhell腳本,以檢查Azure應用代理證書。
我想實作的是,該腳本將顯示證書在到期前不到30天的情況。
到目前為止,我有以下內容
我有以下內容
$aadapServPrinc = Get-AzureADServicePrincipal - Top 100000 | where-object {$_. Tags -包含 "WindowsAzureActiveDirectoryOnPremApp"}。
$allApps = Get-AzureADApplication -Top 100000。
$aadapApp = $aadapServPrinc | ForEach-Object { $allApps -match $_. AppId}。
Write-Host "顯示所有自定義域Azure AD應用代理應用程式和上傳的證書..." -BackgroundColor "Black" -ForegroundColor "Green"。
Write-Host " "/span>
# 獲取分配給Azure AD應用代理應用程式的SSL證書串列。
[string[]]$certs = $null。
foreach ($item in $aadapApp) {
$tempApps = Get-AzureADApplicationProxyApplication -ObjectId $item.ObjectId
$certs = $tempApps.VerifiedCustomDomainCertificatesMetadata
$certsexpire $tempApps.VerifiedCustomDomainCertificatesMetadata.ExpiryDate | Out-Null。
If ($tempApps.VerifiedCustomDomainCertificatesMetadata -match "class" /span>) { }
}
Write-Host ("")
Write-Host ("Used certificates: ")
Write-Host ("")
$certs | Sort-Object | Get-Unique
這將列出證書。
我試著做了一個簡單的Get-Date,并將其轉換為UTC等。
$tempApps.VerifiedCustomDomainCertificatesMetadata.ExpiryDate會像這樣輸出。3/14/2022 10:59:00 PM
我曾嘗試過這樣的方法
$Today = Get-date
$ExpiryDate = $tempApps.VerifiedCustomDomainCertificatesMetadata.ExpiryDate
[Datetime]$ExpiryDate = $ExpiryDate。
$Diff = New-TimeSpan -Start $Today -End $ExpiryDate >。
我希望我的輸出是這樣的。 使用的證書。 顯示所有正在使用的證書
IF ($Diff.day -lt 30)) 顯示哪個證書即將過期
uj5u.com熱心網友回復:
這個PowerShell腳本例子在CSV檔案中非互動式地匯出所有應用程式的注冊秘密和超過規定期限的指定應用程式的證書。
uj5u.com熱心網友回復:
首先,不要讓$certs成為一個字串陣列(即,[string[]]$certs = $null)。 通過這樣做,我們限制了在腳本中后期可使用的資料量。 相反,我們應該通過設定它等于@()將其初始化為一個空陣列,這就是所謂的陣列子運算式運算子
$certs = @()
這允許我們將任何型別的物件加入其中。 這樣做將允許我們以后捕獲完整的VerifiedCustomDomainCertificatesMetadata物件,而不僅僅是它們的ToString()值。
現在我們已經完成了這個作業,在$certs中捕獲的物件將已經擁有ExpiryDate屬性,所以你不需要在另一個變數中單獨跟蹤這個屬性。 $certs應該是一個MetaDataObjects的陣列。 在最后,當你想查看哪些證書將在30天內過期時,你只需回圈查看這些證書并檢查它們的ExpiryDate屬性。
你可以使用下面的代碼,它使用Where-Object來完成這個任務。 在Where-Object FilterScript塊內,$_被用來訪問當前正在從管道中處理的專案。 我們正在檢查這個物件的ExpiryDate是否大于今天的日期-30天。 如果是,它將被輸出到螢屏上。 每個物件(cert)將以這種方式被處理,給你留下一個將在未來30天內到期的證書串列。
$certs| Where-Object { $_. ExpiryDate -gt [datetime]::Today.AddDays(-30) }
在這一點上,如果你想要的話,你可以將這些物件轉為字串,將其轉換為字串表示。 Foreach-Object可以用于此。 與Where-Object類似,我們為Foreach-Object提供了一個腳本塊(對于Foreach-Object稱為行程塊),在這里可以使用$_對每個物件采取行動。
$certs|。
Where-Object { $_.ExpiryDate -gt [datetime]::Today.AddDays(-30) } |
Foreach-Object { [string]$_ )
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326091.html
標籤:
下一篇:Azure應用服務:應用程式依賴清單中指定的程式集(Microsoft.AspNetCore.AzureAppServices.HostingStartup.deps.json)未找到。
