########################################################################################################################################################
# Powershell GUI Tool for basic windows Administration############### #
# Created by MLLSatyanarayana Email=mllsatyanarayana@gmail.com #
# Version:1.2 #
# Enter one or mutiple servers line by line under EnterServers box and click the buttons according to your requirement # #
# #
# In this tool all are self explantory except belwo ones #
# 1) Servic check #
# 2) Check Process #
# 3)Port check # #
# 4) Search Event logs #
# #
# For checking Services #
# example in order to check the specfic service name just enter first 3 letter of service name in the Filter box and click in service check #
# you will get the all the services list whih running with that words you mentioned #
# note: if you do not specify any words it will display all the services #
# For checking process #
# example in order to check the specfic process name just enter first 3 letter of processname in the Filter box and click in process check #
# you will get the all the services list whih running with that words you mentioned #
# note: if you do not specify any words it will display all the process #
# #
# For checking event logs #
# example: if you want to check the event logs system or applications select the log types and enter jey words in the filter box #
# #
# #
# #
# @@@@@@@@@@@@@@@@@@@@@You can covert this script to exe @@@@@@@@@@@@@@@@@@@@ #
########################################################################################################################################################
Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object system.Windows.Forms.Form
$Form.Text = "Power-GUI v1.0 Created by mllsatyanarayana"
$Form.TopMost = $true
$Form.Width = 900
$Form.Height = 598
$Form.FormBorderStyle= "Fixed3D"
$form.StartPosition ="centerScreen"
$form.ShowInTaskbar = $true
#############
$InputBox = New-Object system.windows.Forms.TextBox
$InputBox.Multiline = $true
$InputBox.BackColor = "#A7D4F7"
$InputBox.Width = 280
$InputBox.Height = 132
$InputBox.ScrollBars ="Vertical"
$InputBox.location = new-object system.drawing.point(3,31)
$InputBox.Font = "Microsoft Sans Serif,10,style=Bold"
$Form.controls.Add($inputbox)
$outputBox= New-Object System.Windows.Forms.RichTextBox
$outputBox.Multiline = $true
$outputBox.BackColor = "#FDFEFE"
$outputBox.Width = 1200
$outputBox.Height = 300
$outputBox.ReadOnly =$true
$outputBox.ScrollBars = "Both"
$outputBox.WordWrap = $false
$outputBox.location = new-object system.drawing.point(9,350)
$outputBox.Font = "Lucida Sans Typewriter,9"
$Form.controls.Add($outputBox)
$label3 = New-Object system.windows.Forms.Label
$label3.Text = "EnterServers"
$label3.AutoSize = $true
$label3.Width = 25
$label3.Height = 10
$label3.location = new-object system.drawing.point(4,9)
$label3.Font = "Microsoft Sans Serif,10,style=Bold"
$Form.controls.Add($label3)
$filterbox= New-Object system.windows.Forms.TextBox
$filterbox.Multiline = $true
$filterbox.Width = 280
$filterbox.Height = 77
$filterbox.ScrollBars ="Vertical"
$filterbox.location = new-object system.drawing.point(6,191)
$filterbox.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($filterbox)
$Filters = New-Object system.windows.Forms.Label
$Filters.Text = "Filters"
$Filters.AutoSize = $true
$Filters.Width = 25
$Filters.Height = 10
$Filters.location = new-object system.drawing.point(7,170)
$Filters.Font = "Microsoft Sans Serif,10,style=Bold"
$Form.controls.Add($Filters)
$Eventlb = New-Object system.windows.Forms.Label
$Eventlb.Text = "Search Eventlogs"
$Eventlb.AutoSize = $true
$Eventlb.Width = 25
$Eventlb.Height = 10
$Eventlb.location = new-object system.drawing.point(7,280)
$Eventlb.Font = "Microsoft Sans Serif,10,style=Bold"
$Form.controls.Add($Eventlb)
$applicationbutton = New-Object system.windows.Forms.Button
$applicationbutton.BackColor = "#F2FD48"
$applicationbutton.Text = "Application Logs"
$applicationbutton.Width = 100
$applicationbutton.Height = 25
$applicationbutton.location = new-object system.drawing.point(170,300)
$applicationbutton.Font = "Microsoft Sans Serif,8"
$applicationbutton.Add_Click({SAeventlogs})
$Form.controls.Add($applicationbutton)
$sysbutton= New-Object system.windows.Forms.Button
$sysbutton.BackColor = "#56ACF7"
$sysbutton.Text = "System Logs"
$sysbutton.Width = 100
$sysbutton.Height = 25
$sysbutton.location = new-object system.drawing.point(270,300)
$sysbutton.Font = "Microsoft Sans Serif,8"
$sysbutton.Add_Click({SAeventlogs})
$Form.controls.Add($sysbutton)
$Setup= New-Object system.windows.Forms.Button
$Setup.BackColor = "#FF5733"
$Setup.Text = "Setup Logs"
$Setup.Width = 100
$Setup.Height = 25
$Setup.location = new-object system.drawing.point(370,300)
$Setup.Font = "Microsoft Sans Serif,8"
$Setup.Add_Click({SAeventlogs})
$Form.controls.Add($Setup)
#Dropdown Box
$Dropdown = New-Object system.windows.Forms.ComboBox
$Dropdown.BackColor = "#e4f3fa"
$Dropdown.Width = 150
$Dropdown.Height = 20
$Dropdown.location = new-object system.drawing.point(9,300)
$Dropdown.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($Dropdown)
$EVList=@("Application","System","Setup")
foreach ($EV in $EVList) {
$DropDown.Items.Add($EV)
}
##Dropdown Box End
$Outputlb = New-Object system.windows.Forms.Label
$Outputlb.Text = "Output"
$Outputlb.AutoSize = $true
$Outputlb.Width = 25
$Outputlb.Height = 10
$Outputlb.location = new-object system.drawing.point(12,330)
$Outputlb.Font = "Microsoft Sans Serif,10,style=Bold,Italic"
$Form.controls.Add($Outputlb)
$Upbutton = New-Object system.windows.Forms.Button
$Upbutton.BackColor = "#5bd22c"
$Upbutton.Text = "Uptime"
$Upbutton.Width = 80
$Upbutton.Height = 22
$Upbutton.location = new-object system.drawing.point(309,170)
$Upbutton.Font = "Microsoft Sans Serif,8"
$Upbutton.Add_Click({uptime})
$Form.controls.Add($Upbutton)
$IPbutton = New-Object system.windows.Forms.Button
$IPbutton.BackColor = "#5bd22c"
$IPbutton.Text = "IPConf"
$IPbutton.Width = 80
$IPbutton.Height = 22
$IPbutton.location = new-object system.drawing.point(309,200)
$IPbutton.Font = "Microsoft Sans Serif,8"
$IPbutton.Add_Click({IPconf})
$Form.controls.Add($IPbutton)
$Serbutton = New-Object system.windows.Forms.Button
$Serbutton.BackColor = "#5bd22c"
$Serbutton.Text = "Servicecheck"
$Serbutton.Width = 80
$Serbutton.Height = 22
$Serbutton.location = new-object system.drawing.point(309,50)
$Serbutton.Font = "Microsoft Sans Serif,8"
$Serbutton.Add_Click({Service})
$Form.controls.Add($Serbutton)
$Biosbutton = New-Object system.windows.Forms.Button
$Biosbutton.BackColor = "#5bd22c"
$Biosbutton.Text = "Bios Details"
$Biosbutton.Width = 80
$Biosbutton.Height = 22
$Biosbutton.location = new-object system.drawing.point(309,80)
$Biosbutton.Font = "Microsoft Sans Serif,8"
$Biosbutton.Add_Click({bios})
$Form.controls.Add($Biosbutton)
$Listservicebutton = New-Object system.windows.Forms.Button
$Listservicebutton.BackColor = "#5bd22c"
$Listservicebutton.Text = "List Services"
$Listservicebutton.Width = 80
$Listservicebutton.Height = 22
$Listservicebutton.location = new-object system.drawing.point(309,110)
$Listservicebutton.Font = "Microsoft Sans Serif,8"
$Listservicebutton.Add_Click({get-ser})
$Form.controls.Add($Listservicebutton)
$InstalledAppsbutton = New-Object system.windows.Forms.Button
$InstalledAppsbutton.BackColor = "#5bd22c"
$InstalledAppsbutton.Text = "InstalledApps"
$InstalledAppsbutton.Width = 80
$InstalledAppsbutton.Height = 22
$InstalledAppsbutton.location = new-object system.drawing.point(309,140)
$InstalledAppsbutton.Font = "Microsoft Sans Serif,8"
$InstalledAppsbutton.Add_Click({applist})
$Form.controls.Add($InstalledAppsbutton)
$Pingbutton = New-Object system.windows.Forms.Button
$Pingbutton.BackColor = "#5bd22c"
$Pingbutton.Text = "Ping"
$Pingbutton.Width = 80
$Pingbutton.Height = 22
$Pingbutton.location = new-object system.drawing.point(309,21)
$Pingbutton.Font = "Microsoft Sans Serif,8"
$Pingbutton.Add_Click({pingInfo})
$Form.controls.Add($Pingbutton)
$diskbutton = New-Object system.windows.Forms.Button
$diskbutton.BackColor = "#5bd22c"
$diskbutton.Text = "Drive Useage"
$diskbutton.Width = 80
$diskbutton.Height = 22
$diskbutton.location = new-object system.drawing.point(400,21)
$diskbutton.Font = "Microsoft Sans Serif,8"
$diskbutton.Add_Click({disk})
$Form.controls.Add($diskbutton)
$cpubutton = New-Object system.windows.Forms.Button
$cpubutton.BackColor = "#5bd22c"
$cpubutton.Text = "Cpu Utlization"
$cpubutton.Width = 80
$cpubutton.Height = 22
$cpubutton.location = new-object system.drawing.point(400,50)
$cpubutton.Font = "Microsoft Sans Serif,8"
$cpubutton.Add_Click({cpu})
$Form.controls.Add($cpubutton)
$HWSbutton = New-Object system.windows.Forms.Button
$HWSbutton.BackColor = "#5bd22c"
$HWSbutton.Text = "Get-HWSerial"
$HWSbutton.Width = 80
$HWSbutton.Height = 22
$HWSbutton.location = new-object system.drawing.point(400,140)
$HWSbutton.Font = "Microsoft Sans Serif,9"
$HWSbutton.Add_Click({Get-hwserial})
$Form.controls.Add($HWSbutton)
$Membutton = New-Object system.windows.Forms.Button
$Membutton.BackColor = "#5bd22c"
$Membutton.Text = "Memmoryuse"
$Membutton.Width = 80
$Membutton.Height = 22
$Membutton.location = new-object system.drawing.point(400,80)
$Membutton.Font = "Microsoft Sans Serif,8"
$Membutton.Add_Click({Memmoryuse})
$Form.controls.Add($Membutton)
$OSVbutton = New-Object system.windows.Forms.Button
$OSVbutton.BackColor = "#5bd22c"
$OSVbutton.Text = "OsVersion"
$OSVbutton.Width = 80
$OSVbutton.Height = 22
$OSVbutton.location = new-object system.drawing.point(490,140)
$OSVbutton.Font = "Microsoft Sans Serif,8"
$OSVbutton.Add_Click({get-osv})
$Form.controls.Add($OSVbutton)
$Process = New-Object system.windows.Forms.Button
$Process.BackColor = "#5bd22c"
$Process.Text = "Check Process"
$Process.Width = 80
$Process.Height = 22
$Process.location = new-object system.drawing.point(400,110)
$Process.Font = "Microsoft Sans Serif,8"
$Process.Add_Click({proc})
$Form.controls.Add($Process)
$commgmtbutton = New-Object system.windows.Forms.Button
$commgmtbutton.BackColor = "#55e72c"
$commgmtbutton.Text = "Compmgmt"
$commgmtbutton.Width = 80
$commgmtbutton.Height = 22
$commgmtbutton.location = new-object system.drawing.point(400,170)
$commgmtbutton.Font = "Microsoft Sans Serif,8"
$commgmtbutton.Add_Click({sysmgmt})
$Form.controls.Add($commgmtbutton)
$LAdminbutton = New-Object system.windows.Forms.Button
$LAdminbutton.BackColor = "#5bd22c"
$LAdminbutton.Text = "Get-localadmins"
$LAdminbutton.Width = 89
$LAdminbutton.Height = 22
$LAdminbutton.location = new-object system.drawing.point(490,21)
$LAdminbutton.Font = "Microsoft Sans Serif,8"
$LAdminbutton.Add_Click({Localadmins})
$Form.controls.Add($LAdminbutton)
$DSAbutton = New-Object system.windows.Forms.Button
$DSAbutton.BackColor = "#5bd22c"
$DSAbutton.Text = "DSA.MSC"
$DSAbutton.Width = 80
$DSAbutton.Height = 22
$DSAbutton.location = new-object system.drawing.point(490,50)
$DSAbutton.Font = "Microsoft Sans Serif,8"
$DSAbutton.Add_Click({dsamsc})
$Form.controls.Add($DSAbutton)
$portbutton = New-Object system.windows.Forms.Button
$portbutton.BackColor = "#5bd22c"
$portbutton.Text = "Port check"
$portbutton.Width = 80
$portbutton.Height = 22
$portbutton.location = new-object system.drawing.point(490,80)
$portbutton.Font = "Microsoft Sans Serif,8"
$portbutton.Add_Click({Get-portstatus})
$Form.controls.Add($portbutton)
$Remoteshutbutton = New-Object system.windows.Forms.Button
$Remoteshutbutton.BackColor = "#e3211d"
$Remoteshutbutton.Text = "RemoteShutdown"
$Remoteshutbutton.Width = 88
$Remoteshutbutton.Height = 22
$Remoteshutbutton.location = new-object system.drawing.point(490,110)
$Remoteshutbutton.Font = "Microsoft Sans Serif,7"
$Remoteshutbutton.Add_Click({poweroff})
$Form.controls.Add($Remoteshutbutton)
$Hotfixbutton= New-Object system.windows.Forms.Button
$Hotfixbutton.BackColor = "#5bd22c"
$Hotfixbutton.Text = "Hotfix"
$Hotfixbutton.Width = 80
$Hotfixbutton.Height = 22
$Hotfixbutton.location = new-object system.drawing.point(490,170)
$Hotfixbutton.Font = "Microsoft Sans Serif,8"
$Hotfixbutton.Add_Click({Get-update})
$Form.controls.Add($Hotfixbutton)
$exitbutton = New-Object system.windows.Forms.Button
$exitbutton.BackColor = "#5bd22c"
$exitbutton.Text = "Exit"
$exitbutton.Width = 80
$exitbutton.Height = 22
$exitbutton.location = new-object system.drawing.point(600,20)
$exitbutton.Font = "Microsoft Sans Serif,8"
$exitbutton.Add_Click({$form.close()})
$Form.controls.Add($exitbutton)
###################This function is to dispaly the progress############################
Function Progressbar
{
Add-Type -AssemblyName system.windows.forms
$Script:formt = New-Object System.Windows.Forms.Form
$Script:formt.Text = 'Please Wait'
$Script:formt.TopMost = $true
$Script:formt.StartPosition ="CenterScreen"
$Script:formt.Width = 500
$Script:formt.Height = 20
$Script:formt.MaximizeBox = $false
$Script:formt.MinimizeBox = $false
$Script:formt.Visible = $false
}
############################################## End of Progressbar function#############
############################################## PingFunction#############
function pingInfo {
progressbar
$outputBox.Clear()
$outputBox.text= "Pining the servers please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infping =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infping +=ping $computer -n 3
$pingResult=$infping| ft | out-string
}
$outputBox.Appendtext("{0}`n" -f $pingResult + "`n $ct")
$Script:formt.close()
}
####################end pingInfo########################################
####################################Uptime function start####################################
function get-uptime {
param(
$computername =$env:computername
)
$os = Get-WmiObject win32_operatingsystem -ComputerName $computername -ea silentlycontinue
if($os){
$lastbootuptime =$os.ConvertTodateTime($os.LastBootUpTime)
$LocalDateTime =$os.ConvertTodateTime($os.LocalDateTime)
$up =$LocalDateTime - $lastbootuptime
$uptime ="$($up.Days) days, $($up.Hours)h, $($up.Minutes)mins"
$results =new-object psobject
$results |Add-Member noteproperty LastBootUptime $LastBootuptime
$results |Add-Member noteproperty ComputerName $computername
$results |Add-Member noteproperty uptime $uptime
#Display the results
$results | Select-Object computername,LastBootuptime,Uptime
}
else
{
$results =New-Object psobject
$results =new-object psobject
$results |Add-Member noteproperty LastBootUptime "Na"
$results |Add-Member noteproperty ComputerName $computername
$results |Add-Member noteproperty uptime "Na"
#display the results
$results | Select-Object computername,LastBootUptime,Uptime
}
}
$infouptime =@()
foreach($allserver in $allservers){
$infouptime += get-uptime $allserver
}
$infouptime
function uptime {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Uptime Please wait"
$computers=$InputBox.lines.Split("`n")
$date = Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infouptime = @()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infouptime += get-uptime $computer
$res =$infouptime | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $res +"`n $ct" )
$Script:formt.close()
}
####################################Uptime function end####################################
#####################################Disk Functions start############################################
Function Dinfo ($ComputerName=$ENV:ComputerName) {
foreach ($disk in $ComputerName){
Get-WmiObject win32_logicaldisk -ComputerName $ComputerName -Filter "Drivetype=3" |
Select-Object @{Label = "ServerName";Expression = {$_.__Server}},
@{Label = "Drive Letter";Expression = {$_.DeviceID}},
@{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}},
@{Label = "Free Space (GB)";Expression = {"{0:N1}" -f( $_.Freespace / 1gb ) }},
@{Label="FreeSpace%"; Expression={"{0:N0}" -F (($_.Freespace/$_.Size)*100)}}
}
}
function disk {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Drive status Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infod=@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infod += Dinfo $computer
$dpres= $infod | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $dpres +"`n $ct" )
$Script:formt.close()
}
#####################################Disk Functions start############################################
###############################Remote shutdown#####################################
function poweroff{
$po=shutdown -i
Write-Host $po
}
function sysmgmt{
$outputBox.Text ="opening mmc console for computer management Please wait"
$cm= compmgmt.msc
Write-Host $cm
}
function dsamsc{
$outputBox.Text ="opening DSA.MSC console for computer management Please wait"
$cm= DSA.msc
Write-Host $cm
}
###############################Remote shutdown END #####################################
##################################Service function#################################
function Service{
progressbar
$outputBox.Clear()
$outputBox.Text = "Getting Service status please wait"
$computers=$InputBox.lines.Split("`n")
$sname =$filterbox.text
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infserv =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
#$s= Get-Service -ComputerName $computer -Name $sname| Select-Object MachineName,Name,Status | ft -AutoSize | Out-String
$infserv +=Get-WmiObject -Class win32_service -ComputerName $computer -Filter "Name Like '%$sname%'" | Select-Object PSComputerName,Name,StartMode,State
$s = $infserv| ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $s+"`n $ct")
$Script:formt.close()
}
##################################Service function end #################################
####################################################memmoryFunctions ###start#########################
Function Get-MemmoryUtlizatio ($ComputerName=$ENV:ComputerName) {
Get-WmiObject Win32_OperatingSystem -ComputerName $ComputerName |
Select @{Name="Servername";Expression = {$_.__Server}},
@{Name = "TotalGB";Expression = {[int]($_.TotalVisibleMemorySize/1mb)}},
@{Name = "FreeGB";Expression = {[math]::Round($_.FreePhysicalMemory/1mb,2)}},
@{Name = "PercentFree%"; Expression = {[math]::Round(($_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,2)}}
}
function Memmoryuse {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Memmory Useage Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infoms =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infoms += Get-MemmoryUtlizatio $computer
$mres = $infoms |ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $mres + "`n $ct" )
$Script:formt.close()
}
####################################memmory function end#####################################################
####################################################Installed Appst##########################################
function Get-InstalledApps
{
[CmdletBinding()]
[OutputType([int])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$computer
)
Begin
{
}
Process
{
$win32_product = @(get-wmiobject -class ‘Win32_Product’ -computer $computer)
foreach ($app in $win32_product){
$applications = New-Object PSObject -Property @{
Name = $app.Name
Version = $app.Version
InstallDate=$app.InstallDate
Computername=$app.PSComputerName
}
Write-Output $applications | Select-Object Computername,Name,Version, InstallDate
}
}
End
{
}
}
function Applist {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Installed appliations Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$m = Get-InstalledApps $computer |Out-String
Write-Host $m | ft -AutoSize
$outputBox.Appendtext("{0}`n" -f $m +"`n $ct" )
$Script:formt.close()
}
}
####################################################Installed Appstend#############################################
######################################################################
# Powershell script to get the the Services on remote servers
# It will give the services status
# Customized script useful to every one
# Please contact mllsatyanarayana@gmail.com for any suggestions#
#########################################################################
function Get-servies
{
[CmdletBinding()]
[OutputType([int])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$computer
)
Begin
{
}
Process
{
$win32_product = @(get-wmiobject -class ‘win32_service’ -computer $computer)
foreach ($app in $win32_product){
$applications = New-Object PSObject -Property @{
Name = $app.Name
StartMode = $app.StartMode
State=$app.State
Computername=$app.PSComputerName
}
Write-Output $applications | Select-Object Computername,Name,StartMode, State
}
}
End
{
}
}
function Get-ser {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Services status Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infser =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infser += Get-servies $computer
$sl = $infser| ft -AutoSize |Out-String
}
$outputBox.Appendtext("{0}`n" -f $sl +"`n $ct" )
$Script:formt.close()
}
####function end###
#########################################HOTFIX################################
function Get-hotfixes
{
[CmdletBinding()]
[OutputType([int])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$computer
)
Begin
{
}
Process
{
$win32_product = @(get-wmiobject -class ‘Win32_QuickfixEngineering’ -computer $computer)
foreach ($app in $win32_product){
$applications = New-Object PSObject -Property @{
Name = $app.Name
Description = $app.Description
HotFixID=$app.HotFixID
InstalledBy=$app.InstalledBy
InstalledOn=$app.InstalledOn
Computername=$app.PSComputerName
}
Write-Output $applications | Select-Object Computername,HotFixID ,InstalledBy, InstalledOn
}
}
End
{
}
}
function Get-update {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting windows updates list Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$m = Get-hotfixes $computer | ft -AutoSize|Out-String
$outputBox.Appendtext("{0}`n" -f $m +"`n $ct" )
$Script:formt.close()
}
}
#########################################HOTFIXEND################################
############################################OSTYPE#####################################
function Get-ostype
{
[CmdletBinding()]
[OutputType([int])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$computer
)
Begin
{
}
Process
{
$win32_product = @(get-wmiobject -class ‘ Win32_OperatingSystem ’ -computer $computer)
foreach ($app in $win32_product){
$applications = New-Object PSObject -Property @{
Name = $app.Name
caption = $app.caption
OSArchitecture=$app.OSArchitecture
ServicePackMajorVersion=$app.ServicePackMajorVersion
Computername=$app.PSComputerName
}
Write-Output $applications | Select-Object Computername, caption,OSArchitecture, ServicePackMajorVersion
}
}
End
{
}
}
function Get-osv {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting OS version Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$osver =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$osver += Get-ostype $computer
$osvr = $osver | ft -AutoSize|Out-String
}
$outputBox.Appendtext("{0}`n" -f $osvr+"`n $ct" )
$Script:formt.close()
}
############################################OSTYPE#####################################
####################serial start####################################################################
function get-serial {
param(
$computername =$env:computername
)
$os = Get-WmiObject Win32_bios -ComputerName $computername -ea silentlycontinue
if($os){
$SerialNumber =$os.SerialNumber
$servername=$os.PSComputerName
$results =new-object psobject
$results |Add-Member noteproperty SerialNumber $SerialNumber
$results |Add-Member noteproperty ComputerName $servername
#Display the results
$results | Select-Object computername,SerialNumber
}
else
{
$results =New-Object psobject
$results =new-object psobject
$results |Add-Member noteproperty SerialNumber "Na"
$results |Add-Member noteproperty ComputerName $servername
#display the results
$results | Select-Object computername,SerialNumber
}
}
$infserial =@()
foreach($allserver in $allservers){
$infserial += get-serial $allserver
}
$infserial
function Get-hwserial {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Serialnumbers Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infserial =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infserial += Get-serial $computer
$res = $infserial | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $res +"`n $ct" )
$Script:formt.close()
}
####################serial start###############################################################
#############Bios start#######################################################################
function get-Bios {
param(
$computername =$env:computername
)
$os = Get-WmiObject Win32_bios -ComputerName $computername -ea silentlycontinue
if($os){
$SerialNumber =$os.SerialNumber
$servername=$os.PSComputerName
$Name= $os.Name
$SMBIOSBIOSVersion=$os.SMBIOSBIOSVersion
$Manufacturer=$os.Manufacturer
$results =new-object psobject
$results |Add-Member noteproperty SerialNumber $SerialNumber
$results |Add-Member noteproperty ComputerName $servername
$results |Add-Member noteproperty Name $Name
$results |Add-Member noteproperty SMBIOSBIOSVersion $SMBIOSBIOSVersion
$results |Add-Member noteproperty Manufacture $Manufacture
#Display the results
$results | Select-Object computername,SMBIOSBIOSVersion,Name,Manufacture ,SerialNumber
}
else
{
$results =new-object psobject
$results |Add-Member noteproperty SerialNumber "Na"
$results |Add-Member noteproperty ComputerName $servername
$results |Add-Member noteproperty Name $Name
$results |Add-Member noteproperty SMBIOSBIOSVersion $SMBIOSBIOSVersion
$results |Add-Member noteproperty Manufacture $Manufacture
#display the results
$results | Select-Object computername,SMBIOSBIOSVersion,Name,Manufacture ,SerialNumber
}
}
$infbios =@()
foreach($allserver in $allservers){
$infbios += get-Bios $allserver
}
$infbios
function bios {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Bios details Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infbios =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infbios += get-Bios $computer
$res = $infbios | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $res +"`n $ct" )
$Script:formt.close()
}
#############################Bios start#######################################################################
###############################################pstart###########################################
function checkport {
param(
$computername =$env:computername
)
$sname =$filterbox.text
$os = Test-NetConnection -ComputerName $computername -port $sname -ea silentlycontinue
if($os){
$TcpTestSucceeded =$os.TcpTestSucceeded
$servername=$os.ComputerName
$results =new-object psobject
$results |Add-Member noteproperty TcpTestSucceeded $TcpTestSucceeded
$results |Add-Member noteproperty ComputerName $servername
#Display the results
$results | Select-Object computername,TcpTestSucceeded
}
else
{
$results =New-Object psobject
$results =new-object psobject
$results |Add-Member noteproperty TcpTestSucceeded "Na"
$results |Add-Member noteproperty ComputerName $servername
#display the results
$results | Select-Object computername,TcpTestSucceeded
}
}
$infoport =@()
foreach($allserver in $allservers){
$infoport += checkport $allserver
}
$infoport
function Get-portstatus {
progressbar
$outputBox.Clear()
$outputBox.Text ="Checking Port status Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infoport =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infoport += checkport $computer
$pres= $infoport| ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $pres +"`n $ct")
$Script:formt.close()
}
###############################################pstartend###########################################
function exit{
$global:QUIT = $true
$objForm.Close()
}
############local admin start###########
function get-localadmin {
param ($computerName)
$admins = Gwmi win32_groupuser –computer $computerName
$admins = $admins |? {$_.groupcomponent –like '*"Administrators"'}
$admins |% {
$_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
$matches[1].trim('"') + “\” + $matches[2].trim('"')
}
}
$inflocaladmin =@()
foreach($allserver in $allservers){
$inflocaladmin += get-localadmin $allserver
}
$inflocaladmin
function Localadmins{
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Local admins list Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$inflocaladmin =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$inflocaladmin += get-localadmin $computer
$infres = $inflocaladmin| ft -AutoSize|Out-String
}
$outputBox.Appendtext("{0}`n" -f $infres +"`n $ct" )
$Script:formt.close()
}
############local admin function ends###########
################CPU Function Start#############################################
function Get-Cpu{
param(
$computername =$env:computername
)
$os = gwmi win32_perfformatteddata_perfos_processor -ComputerName $computername| ? {$_.name -eq "_total"} | select -ExpandProperty PercentProcessorTime -ea silentlycontinue
if(($os -match '\d+') -or ($os -eq '0')){
$results =new-object psobject
$results |Add-Member noteproperty Cputil $os
$results |Add-Member noteproperty ComputerName $computername
$results | Select-Object computername,Cputil
}
else{
$results =new-object psobject
$results |Add-Member noteproperty Cputil "Na"
$results |Add-Member noteproperty ComputerName $computername
$results | Select-Object computername,Cputil
}
}
function cpu {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting cpu details Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infcpu =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infcpu += get-Cpu $computer
$res = $infcpu | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $res +"`n $ct" )
$Script:formt.close()
}
################CPU Function end#############################################
##################Processfunction Start########################################
Function Processutil ($computerName=$env:COMPUTERNAME) {
if ($osp = Get-wmiobject win32_process -ComputerName $ComputerName | where{$_.name -like "*$sname*"} | Sort ws -desc | ft Pscomputername,Name,ProcessId,@{Name="Mem Useage (MB)";Expression={[math]::round($_.ws / 1mb)}} -AutoSize )
{
$osp
}
else
{
$outputbox.text = "Server offlne or no process running"
}
}
function proc {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Process info Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$sname =$filterbox.text
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infproc =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infproc += Processutil $computer
$pres = $infproc| ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $pres +"`n $ct" )
$Script:formt.close()
}
##################Processfunction Start########################################
function SAeventlogs{
progressbar
$outputBox.Clear()
$outputBox.text= "Getting Eventlogs please wait"
$date=Get-Date
$computers=$InputBox.lines.Split("`n")
$evs =$Dropdown.SelectedItem.ToString()
$ct = "Task Completed @ " + $date
$sname =$filterbox.text
$Script:formt.Visible=$true
$infev =@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infev += Get-winevent $evs -ComputerName $computer| Where-Object {($_.Message -match "$sname") -or ($_.ID -match "$sname")} |Select-Object Machinename,ID,Timecreated,Message
$evResult =$infev | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $evResult + "`n $ct")
$Script:formt.close()
}
#Powershell function to get theremote server IP details,Subnetmask,Gateway,DHCP Enabled status,DNS Servers,Wins and Macaddress
function NetIPdetails ($computerName=$env:COMPUTERNAME)
{
foreach ($Computer in $ComputerName) {
if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
try {
$Networks = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $Computer -EA Stop | ? {$_.IPEnabled}
} catch {
Write-Warning "Error occurred while querying $computer."
Continue
}
foreach ($Network in $Networks) {
$IPAddress = $Network.IpAddress[0]
$SubnetMask = $Network.IPSubnet[0]
$DefaultGateway = $Network.DefaultIPGateway
$DNSServers = $Network.DNSServerSearchOrder
$Description = $Network.Description
$WINS1 = $Network.WINSPrimaryServer
$WINS2 = $Network.WINSSecondaryServer
$WINS = @($WINS1,$WINS2)
$IsDHCPEnabled = $false
If($network.DHCPEnabled) {
$IsDHCPEnabled = $true
}
$MACAddress = $Network.MACAddress
$OutputObj = New-Object -Type PSObject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.ToUpper()
$OutputObj | Add-Member -MemberType NoteProperty -Name IPAddress -Value $IPAddress
$OutputObj | Add-Member -MemberType NoteProperty -Name SubnetMask -Value $SubnetMask
$OutputObj | Add-Member -MemberType NoteProperty -Name Gateway -Value ($DefaultGateway -join ",")
$OutputObj | Add-Member -MemberType NoteProperty -Name IsDHCPEnabled -Value $IsDHCPEnabled
$OutputObj | Add-Member -MemberType NoteProperty -Name DNSServers -Value ($DNSServers -join ",")
$OutputObj | Add-Member -MemberType NoteProperty -Name Description -Value $Description
$OutputObj | Add-Member -MemberType NoteProperty -Name WINSServers -Value ($WINS -join ",")
$OutputObj | Add-Member -MemberType NoteProperty -Name MACAddress -Value $MACAddress
$OutputObj
}
}
}
}
function IPconf {
progressbar
$outputBox.Clear()
$outputBox.Text ="Getting Ip conf details Please wait"
$computers=$InputBox.lines.Split("`n")
$date =Get-Date
$ct = "Task Completed @ " + $date
$Script:formt.Visible=$true
$infod=@()
foreach ($computer in $computers)
{
$Script:formt.text="Working on $computer"
$infIp += NetIPdetails $computer
$ipres= $infIp | ft -AutoSize | Out-String
}
$outputBox.Appendtext("{0}`n" -f $ipres +"`n $ct" )
$Script:formt.close()
}
[void]$Form.ShowDialog()
$Form.Dispose()
##################################################End of the function###############
No comments:
Post a Comment