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.
Şunlar için geçerlidir: Gelişmiş Grup İlkesi Yöneticisi 4.0 SP3
Bu makalede yer alan örnek betik, araç içinde Grup İlkesi Nesnelerini (GPO) yönetirken hatalara neden olan arşiv tutarsızlıklarına yardımcı olabilir.
gpostate.xml dosyasında tutarsız bilgiler varsa oluşabilecek hata örnekleri:
Create GPO: Test...Failed.
[Error] The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
--------------------------------------------------------------------------------------------------------
1 actions failed.
Senaryo
İşte betiğin yaptığı:
- Gelişmiş Grup İlkesi Yönetimi (AGPM) hizmetini durdurur.
- gpostate.xml dosyasını tarar ve arşivdeki var olmayan veya tamamlanmamış GUID klasörlerine ait başvuruları (herhangi bir başvuru varsa) kaldırır.
- Herhangi bir değişiklik algılanırsa gpostate.xml dosyasını bir zaman damgasıyla yeniden adlandırır ve yeni bir gpostate.xml dosyası kaydeder.
- AGPM hizmetini başlatır.
Önemli
Bu örnek betik, herhangi bir Microsoft standart destek programı veya hizmeti altında desteklenmez.
Örnek betik, herhangi bir garanti olmadan OLDUĞU GIBI sağlanır. Microsoft ayrıca, satılabilirlik veya belirli bir amaca uygunluk ile ilgili zımni garantiler dahil ancak bunlarla sınırlı olmamak üzere tüm zımni garantileri reddeder.
Örnek komut dosyalarının ve belgelerin kullanımından veya performansından kaynaklanan tüm risk size aittir. Hiçbir durumda Microsoft, yazarları veya komut dosyalarının oluşturulması, üretilmesi veya sunulmasında yer alan herhangi bir kişi, örnek komut dosyalarının veya belgelerin kullanımından veya kullanılamamasından kaynaklanan herhangi bir zarardan (ticari kar kaybı, iş kesintisi, iş bilgilerinin kaybı veya diğer maddi kayıplar dahil ancak bunlarla sınırlı olmamak üzere) sorumlu tutulamaz. Microsoft bu tür zararların olasılığı konusunda bilgilendirilmiş olsa bile.
Write-Host "Stopping AGPM Service"
Stop-Service "AGPM Service" -ErrorAction Stop
$AGPMArchivePath = Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\AGPM" -Name "ArchivePath" -ErrorAction Stop
$AGPMFile =$AGPMArchivePath + "gpostate.xml"
[xml]$AGPMArchive = Get-Content -Path $AGPMFile -ErrorAction Stop
$bChangesMade = $false
foreach( $GPODomain in $AGPMArchive.Archive.GPODomain )
{
Write-Host "Processing archive information for domain: $($GPODomain.domain)"
$ArchiveGPO = if( $GPODomain.GPO -is [array] ){ $GPODomain.GPO[0] } else { $GPODomain.GPO }
While( $ArchiveGPO -ne $null )
{
$TempGPONext = $ArchiveGPO.NextSibling
Write-Host "Checking GPO $($ArchiveGPO.id)"
if( $ArchiveGPO.state.archiveId -ne $null ){
$TestArchivePath = $AGPMArchivePath + $ArchiveGPO.state.archiveId
if( -not (Test-Path $TestArchivePath ) )
{
Write-Host "$($ArchiveGPO.state.archiveId) is not in archive - Removing"
$ArchiveGPO.ParentNode.RemoveChild($ArchiveGPO) > $null
$bChangesMade = $true
}
}
else
{
$ArchiveGPOHistoryItem = $ArchiveGPO.History.FirstChild
While( $ArchiveGPOHistoryItem -ne $null )
{
$TempNext = $ArchiveGPOHistoryItem.NextSibling
$TestArchivePath = $AGPMArchivePath + $ArchiveGPOHistoryItem.archiveId
if( -not (Test-Path -Path $TestArchivePath) )
{
Write-Host "History '$($ArchiveGPOHistoryItem.archiveId)' for State '$($ArchiveGPOHistoryItem.state)' on '$($ArchiveGPOHistoryItem.time)' is not in archive - Removing"
$ArchiveGPOHistoryItem.ParentNode.RemoveChild($ArchiveGPOHistoryItem) > $null
$bChangesMade = $true
}
elseif( -not (Test-Path -Path ($TestArchivePath + "\bkupinfo.xml") ) )
{
Write-Host "'$($ArchiveGPOHistoryItem.archiveId)' does not have bkupinfo.xml - Removing"
$ArchiveGPOHistoryItem.ParentNode.RemoveChild($ArchiveGPOHistoryItem) > $null
$bChangesMade = $true
}
$ArchiveGPOHistoryItem = $TempNext
}
if( -not $ArchiveGPO.History.HasChildNodes )
{
Write-Host "GPO $($ArchiveGPO.id) has no History removing."
$ArchiveGPO.ParentNode.RemoveChild($ArchiveGPO) > $null
$bChangesMade = $true
}
}
$ArchiveGPO = $TempGPONext
}
}
if( $bChangesMade )
{
$BackupFileName = "gpostate\_bak\_$((Get-Date).ToString('yyyymmdd-hhmmss')).xml"
Write-Host "Backing up gpostate.xml file to $BackupFileName"
Move-Item -Path $AGPMFile -Destination ($AGPMArchivePath + $BackupFileName) -Force -ErrorAction Stop
Write-Host "Saving updates"
$AGPMArchive.Save($AGPMArchivePath + "gpostate.xml")
}
else
{
Write-Host "No Changes made."
}
Write-Host "Starting AGPM service."
Start-Service "AGPM Service"