Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Another little powershell script to automate some bits that i come across
this script will
1. test if you have the hyper-v bpa installed
2. download the hyper-v and install it
3. run it and list errors and warnings
4. output the whole thing to a CSV file
this is on the start of the script i have a bit more the add so will be posting more at a later date
#script begin
set-executionpolicy unrestricted
$testbpaexit = $null
$testbpaexist = get-wmiobject win32_quickfixengineering |where {$_.hotfixid -eq "KB977238"}
#if bpa doesnt exist download and install
if ($testbpaexist -eq $null)
{
write-host "Hyper-V BPA Not Found" -foregroundcolor red -backgroundcolor black
write-host
write-host
write-host "Downloading BPA...." -foregroundcolor Blue -backgroundcolor black
$rootpath = $env:systemroot + "\System32\wusa.exe"
$file = $env:Userprofile + "\Downloads\hypervbpa.msu"
$url = "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=89d80c15-0082-4fef-a4fc-fefa463bed08&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f1%2fA%2f1%2f1A148F55-7C2C-41F5-912A-995476A49511%2fWindows6.1-KB977238-x64.msu"
$downloadobject = new-object System.Net.WebClient
$downloadobject.DownloadFile($url,$file)
write-host "Installing BPA...." -foregroundcolor Blue -backgroundcolor black
$parameters = $file + " /quiet /norestart"
$installbpa = [System.Diagnostics.Process]::Start( "wusa",$parameters )
$installbpa.WaitForExit()
write-host "Installation Done." -foregroundcolor Green -backgroundcolor black
}
#start bpa
cls
write-host "Starting BPA Scan...." -foregroundcolor Yellow -backgroundcolor black
$bparesults = invoke-bpamodel Microsoft/windows/hyper-v
write-host "Done..." -foregroundcolor Yellow -backgroundcolor black
write-host
write-host
$bpaerrors = $null
$bpaerrors = get-bparesult Microsoft/windows/hyper-v |where {$_.Severity -eq "Error"}
if ($bpaerrors -ne $null)
{
write-host "Displaying Errors...." -foregroundcolor Red -backgroundcolor black
write-host "There are " $bpaerrors.count " Errors Detected"
foreach ($b in $bpaerrors)
{
write-host "Title:" -foregroundcolor Blue -backgroundcolor white
write-host $b.Title -foregroundcolor red -backgroundcolor black
write-host "Problem:" -foregroundcolor Blue -backgroundcolor white
write-host $b.problem -foregroundcolor red -backgroundcolor black
write-host "Impact:" -foregroundcolor Blue -backgroundcolor white
write-host $b.impact -foregroundcolor red -backgroundcolor black
write-host "Resolution:" -foregroundcolor Blue -backgroundcolor white
write-host $b.resolution -foregroundcolor red -backgroundcolor black
write-host "Help:" -foregroundcolor Blue -backgroundcolor white
write-host $b.help -foregroundcolor red -backgroundcolor black
write-host
}
}
$bpawarnings = $null
$bpawarnings = get-bparesult Microsoft/windows/hyper-v| where {$_.Severity -eq "Warning"}
if ($bpawarnings -ne $null)
{
write-host "Displaying Warnings..." -foregroundcolor Yellow -backgroundcolor black
write-host "There are " $bpawarnings.count " Warnings Detected"
foreach ($b2 in $bpawarnings)
{
write-host "Title:" -foregroundcolor Blue -backgroundcolor white
write-host $b2.Title -foregroundcolor Yellow -backgroundcolor black
write-host "Problem:" -foregroundcolor Blue -backgroundcolor white
write-host $b2.problem -foregroundcolor Yellow -backgroundcolor black
write-host "Impact:" -foregroundcolor Blue -backgroundcolor white
write-host $b2.impact -foregroundcolor Yellow -backgroundcolor black
write-host "Resolution:" -foregroundcolor Blue -backgroundcolor white
write-host $b2.resolution -foregroundcolor Yellow -backgroundcolor black
write-host "Help:" -foregroundcolor Blue -backgroundcolor white
write-host $b2.help -foregroundcolor Yellow -backgroundcolor black
write-host
write-host
write-host
}
}
# Output to a CSV file
write-host "Outputting to file...."
$Outpath = $env:Userprofie + “\Desktop\BPAHyperVReport.csv
get-bparesult Microsoft/windows/hyper-v | select resultnumber,@{name=”Server Name”; Expression={hostname}},ModelID,RuleID,ResultID,Severity,NeutralSeverity,Category,Title,Problem,Impact,Resolution,Compliance,Help,Excluded | Export-CSV $Outpath