Repair-VSSWriter.psm1
Function Get-VSSwriterStatus { Param() #Requires -RunAsAdministrator ##Populate Variables $Writers = vssadmin list writers | Select-String -Pattern "Writer name","State" $WriterNames = $Writers | Select-String -SimpleMatch "Writer name" $WriterStates = $Writers | Select-String -SimpleMatch "State" $Total = ($WriterNames | measure-Object).count $NameCounter = 0 $StateCounter = 0 ##Build HashTable $Hash = @{} While ($NameCounter -lt $Total) { $WriterNames | ForEach-Object { $NameFormat = $WriterNames[$NameCounter].ToString().trimStart("Writer name :").Trim("'") $StateFormat = $WriterStates[$StateCounter].ToString().TrimStart("State: ") $Hash.Add($NameFormat,$StateFormat) $NameCounter = $NameCounter +1 $StateCounter = $StateCounter +1 } ##Sort $Hash.GetEnumerator() | Sort-Object -Property Name } } Function Repair-VSSwriterStatus { Param() [CmdletBinding()] $VSS = Get-VSSwriterStatus $Status = $VSS.GetEnumerator() | Where-Object {$_.Value -notlike "*Stable*"} ForEach ($Object in $Status) { Switch ($Object.Name) { 'ASR Writer' {Restart-Service VSS -Force} 'BITS Writer' {Restart-Service BITS -Force} 'Certificate Authority' {Restart-Service CertSvc -Force} 'COM+ REGDB Writer' {Restart-Service VSS -Force} 'DFS Replication service writer' {Restart-Service DFSR -Force} 'DHCP Jet Writer' {Restart-Service DHCPServer -Force} 'FRS Writer' {Restart-Service NtFrs -Force} 'NtFrs' {Restart-Service srmsvc -Force} 'FSRM writer' {Restart-Service AppHostSvc -Force} 'IIS Config Writer' {Restart-Service srmsvc -Force} 'IIS Metabase Writer' {Restart-Service IISADMIN -Force} 'Microsoft Exchange Replica Writer' {Restart-Service MSExchangeRepl -Force} 'Microsoft Exchange Writer' {Restart-Service MSExchangeIS -Force } 'Microsoft Hyper-V VSS Writer' {Restart-Service vmms -Force} 'MSMQ Writer (MSMQ)' {Restart-Service MSMQ -Force} 'MSSearch Service Writer' {Restart-Service WSearch -Force} 'NPS VSS Writer' {Restart-Service EventSystem -Force} 'NTDS' {Restart-Service NTDS -Force} 'OSearch VSS Writer' {Restart-Service OSearch -Force} 'OSearch14 VSS Writer' {Restart-Service OSearch14 -Force} 'Registry Writer' {Restart-Service VSS -Force} 'Shadow Copy Optimization Writer' {Restart-Service VSS -Force} 'SMS Writer' {Restart-Service SMS_SITE_VSS_WRITER -Force} 'SPSearch VSS Writer' {Restart-Service SPSearch -Force} 'SPSearch4 VSS Writer' {Restart-Service SPSearch4 -Force} 'SqlServerWriter' {Restart-Service SQLWriter -Force} 'System Writer' {Restart-Service CryptSvc -Force} 'TermServLicensing' {Restart-Service TermServLicensing -Force} 'WDS VSS Writer' {Restart-Service WDSServer -Force} 'WIDWriter' {Restart-Service WIDWriter -Force} 'WINS Jet Writer' {Restart-Service WINS -Force} 'WMI Writer' {Restart-Service Winmgmt -Force} } } Get-VSSwriterStatus } |