Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, müşterilerin uygulayabileceği veya kendi betiklerini oluşturmayı öğrenmek için şablon olarak kullanabilecekleri örnek betikler içerir. Düzeltmeler için betik paketleri oluşturmak üzere burada sağlanan bilgileri kullanın.
Komut dosyası açıklamaları
Bu tabloda betik adları, açıklamaları, algılamaları, düzeltmeleri ve yapılandırılabilir öğeleri gösterilir. Adları ile Detect başlayan komut dosyaları algılama komut dosyalarıdır. Düzeltme betikleri ile başlar Remediate. Bu betikler bu makalenin bir sonraki bölümünden kopyalanabilir.
| Komut dosyası adı | Açıklama |
|---|---|
Ağ sertifikalarını denetlemeDetect_Expired_Issuer_Certificates.ps1Remediate_Expired_Issuer_Certificates.ps1 |
Makinenin veya Kullanıcının kişisel deposundaki bir CA tarafından verilen, süresi dolmuş veya süresi dolmak üzere olan sertifikaları algılar.
Algılama betiğindeki değeri $strMatch değiştirerek CA'yı belirtin. Süresi dolan sertifikaları bulmak için $expiringDays 0 belirtin veya süresi dolmak üzere olan sertifikaları bulmak için başka bir gün sayısı belirtin.
Kullanıcıya bir bildirim göndererek düzeltir. Kullanıcıların görmesini istediğiniz ileti başlığı ve metni ile birlikte ve $msgText değerlerini belirtin$Title.
Yenilenmesi gerekebilecek, süresi dolmuş sertifikalar konusunda kullanıcıları bilgilendirir. Oturum açmış kimlik bilgilerini kullanarak betiği çalıştırın: Evet |
Eski sertifikaları temizleDetect_Expired_User_Certificates.ps1Remediate_Expired_User_Certificates.ps1 |
Geçerli kullanıcının kişisel deposundaki CA tarafından verilen süresi dolmuş sertifikaları algılar.
Algılama betiğindeki değeri $certCN değiştirerek CA'yı belirtin.
CA tarafından verilen süresi dolmuş sertifikaları geçerli kullanıcının kişisel deposundan silerek düzeltir. Düzeltme betiğindeki değeri $certCN değiştirerek CA'yı belirtin.
CA tarafından verilen süresi dolmuş sertifikaları bulur ve geçerli kullanıcının kişisel deposundan siler. Oturum açmış kimlik bilgilerini kullanarak betiği çalıştırın: Evet |
Eski Grup İlkelerini güncelleştirme (yerleşik) Detect_stale_Group_Policies.ps1Remediate_stale_GroupPolicies.ps1 |
Son Grup İlkesigrup ilkesi yenilemenin öncesinden 7 days büyük olup olmadığını algılar.
Bu betik paketi Düzeltmelere dahil edilmiştir, ancak eşiği değiştirmek isterseniz bir kopyası sağlanır. Algılama betiğinde değerini $numDays değiştirerek yedi gün eşiğini özelleştirin.
Çalıştırarak gpupdate /target:computer /force düzeltir ve gpupdate /target:user /forceSertifikalar ve yapılandırmalar Group Policygrup ilkesi aracılığıyla teslim edildiğinde ağ bağlantısıyla ilgili destek çağrılarını azaltmaya yardımcı olabilir. Oturum açmış kimlik bilgilerini kullanarak betiği çalıştırın: Evet |
Ağ sertifikaları komut dosyasını denetleme
Bu komut dosyası paketi, Makinenin veya Kullanıcının kişisel deposundaki bir CA tarafından verilen, süresi dolmuş veya süresi dolmak üzere olan sertifikaları algılar. Betik, kullanıcıya bir bildirim göndererek düzeltir.
Detect_Expired_Issuer_Certificates.ps1
#=============================================================================================================================
#
# Script Name: Detect_Expired_Issuer_Certificates.ps1
# Description: Detect expired certificates issued by "CN=<your CA here>" in either Machine
# or User certificate store
# Notes: Change the value of the variable $strMatch from "CN=<your CA here>" to "CN=..."
# For testing purposes the value of the variable $expiringDays can be changed to a positive integer
# Don't change the $results variable
#
#=============================================================================================================================
# Define Variables
$results = @()
$expiringDays = 0
$strMatch = "CN=<your CA here>"
try
{
$results = @(Get-ChildItem -Path Cert:\LocalMachine\My -Recurse -ExpiringInDays $expiringDays | where {$_.Issuer -match $strMatch})
$results += @(Get-ChildItem -Path Cert:\CurrentUser\My -Recurse -ExpiringInDays $expiringDays | where {$_.Issuer -match $strMatch})
if (($results -ne $null)){
#Below necessary for Intune as of 10/2019 will only remediate Exit Code 1
Write-Host "Match"
Return $results.count
exit 1
}
else{
#No matching certificates, do not remediate
Write-Host "No_Match"
exit 0
}
}
catch{
$errMsg = $_.Exception.Message
Write-Error $errMsg
exit 1
}
Remediate_Expired_Issuer_Certificates.ps1
#=============================================================================================================================
#
# Script Name: Remediate_Expired_Issuer_Certificates.ps1
# Description: Raise a Toast Notification if expired certificates issued by "CN=..."
# to user or machine on the machine where detection script found them. No remediation action besides
# the Toast is taken.
# Notes: Change the values of the variables $Title and $msgText
#
#=============================================================================================================================
## Raise toast to have user contact whoever is specified in the $msgText
# Define Variables
$delExpCert = 0
$Title = "Title"
$msgText = "message"
# Main script
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
$APP_ID = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
$template = @"
<toast>
<visual>
<binding template="ToastText02">
<text id="1">$Title</text>
<text id="2">$msgText</text>
</binding>
</visual>
</toast>
"@
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
$xml.LoadXml($template)
$toast = New-Object Windows.UI.Notifications.ToastNotification $xml
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($APP_ID).Show($toast)
Eski sertifikaları temizle betik paketi
Bu betik paketi, geçerli kullanıcının kişisel deposundaki bir CA tarafından verilen süresi dolmuş sertifikaları algılar. Betik, CA tarafından verilen süresi dolmuş sertifikaları geçerli kullanıcının kişisel deposundan silerek düzeltir.
Detect_Expired_User_Certificates.ps1
#=============================================================================================================================
#
# Script Name: Detect_Expired_User_Certificates.ps1
# Description: Detect expired certificates issued by "CN=<your CA here>" to User
# Notes: Change the value of the variable $certCN from "CN=<your CA here>" to "CN=...".
# Don't change $results
#
#=============================================================================================================================
# Define Variables
$results = 0
$certCN = "CN=<your CA here>"
try
{
$results = Get-ChildItem -Path Cert:\CurrentUser\My -Recurse -ExpiringInDays 0 | where {$_.Issuer -eq($certCN)}
if (($results -ne $null)){
#Below necessary for Intune as of 10/2019 will only remediate Exit Code 1
Write-Host "Match"
Return $results.count
exit 1
}
else{
Write-Host "No_Match"
exit 0
}
}
catch{
$errMsg = $_.Exception.Message
Write-Error $errMsg
exit 1
}
Remediate_Expired_User_Certificates.ps1
#=============================================================================================================================
#
# Script Name: Remediate_Expired_User_Certificates.ps1
# Description: Remove expired certificates issued by "CN=<your CA here>" to User
# Notes: Change the value of the variable $certCN from "CN=<your CA here>" to "CN=..."
#
#=============================================================================================================================
# Define Variables
$certCN = "CN=<your CA here>"
try
{
Get-ChildItem -Path cert:\CurrentUser -Recurse -ExpiringInDays 0 | where {$_.Issuer -eq($certCN)} | Remove-Item
exit 0
}
catch{
$errMsg = $_.Exception.Message
Write-Error $errMsg
exit 1
}
Eski Grup İlkeleri betik paketini güncelleştirme
Bu betik paketi Düzeltmelere dahil edilmiştir, ancak eşiği değiştirmek isterseniz bir kopyası sağlanır.
Bu betik paketi, son Grup İlkesigrup ilkesi yenilemenin öncesinden 7 days büyük olup olmadığını algılar. Betik, ve komutunu çalıştırarak gpupdate /target:computer /forcegpupdate /target:user /forcedüzeltir.
Detect_stale_Group_Policies.ps1
#=============================================================================================================================
#
# Script Name: Detect_stale_Group_Policies.ps1
# Description: Detect if Group Policy has been updated within number of days
# Notes: Remediate if "Match", $lastGPUpdateDays default value of 7, change as appropriate
#
#=============================================================================================================================
# Define Variables
try {
$gpResult = [datetime]::FromFileTime(([Int64] ((Get-ItemProperty -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\{00000000-0000-0000-0000-000000000000}").startTimeHi) -shl 32) -bor ((Get-ItemProperty -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\{00000000-0000-0000-0000-000000000000}").startTimeLo))
$lastGPUpdateDate = Get-Date ($gpResult[0])
[int]$lastGPUpdateDays = (New-TimeSpan -Start $lastGPUpdateDate -End (Get-Date)).Days
if ($lastGPUpdateDays -gt 7){
#Exit 1 for Intune. We want it to be within the last 7 days "Match" to remediate in SCCM
Write-Host "Match"
exit 1
}
else {
#Exit 0 for Intune and "No_Match" for SCCM, only remediate "Match"
Write-Host "No_Match"
exit 0
}
}
catch {
$errMsg = $_.Exception.Message
return $errMsg
exit 1
}
Remediate_stale_GroupPolicies.ps1
#=============================================================================================================================
#
# Script Name: Remediate_stale_GroupPolicies.ps1
# Description: This script triggers Group Policy update
# Notes: No variable substitution needed
#
#=============================================================================================================================
try {
$compGPUpd = gpupdate /force
$gpResult = [datetime]::FromFileTime(([Int64] ((Get-ItemProperty -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\{00000000-0000-0000-0000-000000000000}").startTimeHi) -shl 32) -bor ((Get-ItemProperty -Path "Registry::HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\{00000000-0000-0000-0000-000000000000}").startTimeLo))
$lastGPUpdateDate = Get-Date ($gpResult[0])
[int]$lastGPUpdateDays = (New-TimeSpan -Start $lastGPUpdateDate -End (Get-Date)).Days
if ($lastGPUpdateDays -eq 0){
Write-Host "gpupdate completed successfully"
exit 0
}
else{
Write-Host "gpupdate failed"
}
}
catch{
$errMsg = $_.Exception.Message
return $errMsg
exit 1
}
Sonraki adımlar
Betik paketlerini dağıtma hakkında daha fazla bilgi için bkz: Düzeltmeler.