Function Find-Compliance { param ( [Parameter(Mandatory)] $StatusID )
$category_list = Import-Excel "C:\pATCHING\pATCHES.xlsx"
foreach ($category in $category_list) {
if ($category.status -eq $StatusID) {
Write-Host "$($category.Parameter), whose status is $($Category.status)." } else { Write-Host "System is fully compliant in all parameter" -ForegroundColor Green } } } Find-Compliance -StatusID 'Non-Compliant'
嘗試了上面的代碼,但它給出了多個輸出。
uj5u.com熱心網友回復:
我建議您在回圈時將其保存在一個變數中,當它完成時,它應該根據該變數確定一切是否合規,如果不合規,則列印出所有不合規的內容:
Function Find-Compliance {
param ( [Parameter(Mandatory)] $StatusID )
$category_list = Import-Excel "C:\pATCHING\pATCHES.xlsx"
$isCompliant = $True
$nonCompliantParameters = @()
foreach ($category in $category_list) {
if ($category.status -eq $StatusID) {
Write-Host "$($category.Parameter), whose status is $($Category.status)."
$isCompliant = $False
$nonCompliantParameters = $category
}
}
If ($isCompliant) {
Write-Host "System is fully compliant in all parameters" -ForegroundColor Green
} else {
Write-Host "System is not compliant in all parameters, non compliant parameters:" -ForegroundColor Red
Write-Host $nonCompliantParameters
}
}
Find-Compliance -StatusID 'Non-Compliant'
uj5u.com熱心網友回復:
這是也寫入 .xlsx 檔案的代碼:
Function Find-Compliance {
param ( [Parameter(Mandatory)] $StatusID )
$category_list = Import-Excel "G:\Test\Patches.xlsx"
#Remove-Item "G:\Test\Patches.xlsx" -force
#Clear Overall Compliance Status!
($Category_list[-1]).Status = ""
$Compliant = $True
foreach ($Entry in $category_list) {
if (($Entry.status) -eq $StatusID) {
"$($Entry.Parameter), whose status is $($Entry.status)."
$Compliant = $False
}
}
If ($Compliant) {
Write-Host "System is fully compliant in all parameters" -ForegroundColor Green
($Category_list[-1]).Status = "Fully-Compliant"
}
else {
Write-Host "System is NOT fully compliant in all parameters" -ForegroundColor RED
($Category_list[-1]).Status = "Non-Compliant"
}
$Category_List #Debugging Only!
$Category_list | Export-Excel "G:\Test\Patches.xlsx"
} #End Function Find-Compliance
#------ Main Program -----
Clear-Host
Find-Compliance -StatusID 'Non-Compliant'
控制臺中的輸出:
FORCEPOINT ONE ENDPOINT, whose status is Non-Compliant.
System is NOT fully compliant in all parameters
Parameter Status
--------- ------
Microsoft Windows 11 Enterprise Compliant
Patching Compliant
Encryption Compliant
Antivirus Compliant
Firewall Compliant
DLP Compliant
Tanium Client 7.4.8.1042 Compliant
FORCEPOINT ONE ENDPOINT Non-Compliant
EDM Compliant
BeyontTrust Privilege Management Compliant
Mircosoft O365 Compliant
Cofense Reporter Compliant
Pulse Secure 9.1 Compliant
Google Chrome Compliant
Microsoft Edge Compliant
Email Validation Tool Compliant
Overall Compliance:- Non-Complient
Excel檔案:

更新:我發現了一個我無法解釋的怪癖,但這就是發生的事情。當 Export-Excel 寫入檔案時,它會設定檔案權限,以便不檢查用戶的完全控制和修改。因此,當您嘗試在 Excel 中修改 Excel 檔案時,您會遇到共享違規!但是,如果您以管理員身份打開 Excel,則不會出現這些錯誤。同樣,如果您為用戶修改檔案的權限,您可以正常啟動 Excel,并且不會出現共享沖突。

uj5u.com熱心網友回復:
為什么不簡單地使用Where-Object?
$category_list = Import-Excel "C:\pATCHING\pATCHES.xlsx"
$nonCompliant = @($category_list | Where-Object {$_.Status -ne 'Compliant'})
if ($nonCompliant.Count) {
Write-Host "System is not compliant in all parameters, non compliant parameters:`r`n" -ForegroundColor Red
Write-Host ($nonCompliant.Parameter -join [environment]::NewLine)
}
else {
Write-Host "System is fully compliant in all parameters" -ForegroundColor Green
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523412.html
標籤:电源外壳
上一篇:選擇字串模式匹配和不匹配
