Script 1:
cls
Cd C:\temp\PSTools
$computers = Get-Content "C:\Temp\repairWMI\Input.txt"
Foreach ($computer in $computers)
{
$filecopy = "\\"+$computer+"\C$"
$comp = "\\"+$computer
if (Test-Path $filecopy)
{
Copy-Item "C:\Temp\repairWMI\TorepairWMI.ps1" -Destination $filecopy -Force
Start-sleep 5
.\PsExec.exe -i -s $comp PowerShell.exe -noninteractive -File "C:\TorepairWMI.ps1"
}
}
Script 2:
Function Repair-WMI {
CD C:\Windows\System32\WBEM
cmd /C "dir /b *.mof *.mfl | findstr /v /i uninstall > moflist.txt & for /F %s in (moflist.txt) do mofcomp %s"
CD "C:\Program Files\Microsoft Policy Platform"
cmd /C "mofcomp ExtendedStatus.mof"
# Check PATH
# Stop WMI
Stop-Service -Force ccmexec -ErrorAction SilentlyContinue
Stop-Service -Force winmgmt
# WMI Binaries
[String[]]$aWMIBinaries=@("unsecapp.exe","wmiadap.exe","wmiapsrv.exe","wmiprvse.exe","scrcons.exe")
foreach ($sWMIPath in @(($ENV:SystemRoot+"\System32\wbem"),($ENV:SystemRoot+"\SysWOW64\wbem"))) {
if(Test-Path -Path $sWMIPath){
push-Location $sWMIPath
foreach($sBin in $aWMIBinaries){
if(Test-Path -Path $sBin){
$oCurrentBin=Get-Item -Path $sBin
& $oCurrentBin.FullName /RegServer
}
else{
# Warning only for System32
if($sWMIPath -eq $ENV:SystemRoot+"\System32\wbem"){
Write-Warning "File $sBin not found!"
}
}
}
}
}
}
Repair-WMI
Start-sleep 10
Remove-Item C:\TorepairWMI.PS1 -Force
No comments:
Post a Comment