My ToolBox
Function Show-Menu{
param(
[Parameter(Mandatory)]
[String] $Title,
#[Parameter(Mandatory)]
[String[]] $MenuItemsList=@("Menu 01","Menu 02","Menu 03")
)
#Variables decalration
$MenuItemsNumber = 1
Write-Host "================ $Title ================"
Write-Host " 0 - To quit"
foreach ($MenuItems in $MenuItemsList){
Write-Host " $MenuItemsNumber - $MenuItems "
$MenuItemsNumber += 1
}
Write-Host "================ $Title ================"
$MainMenuChoice = Read-Host -Prompt "Choice"
return $MainMenuChoice
}
#Variables
$MenuItemsList = @("Change Selected Server",
"Test ping","Replication report",
"Stopped Services",
"LDAP test and query",
"Get memory and CPU utilization",
"Get Windows Features","DNS Test and query",
"Share test",
"DCDiag test")
$MainMenuLoop = $true
$ServerName = Read-Host -Prompt "Type Server Name"
While ($MainMenuLoop){
Clear-Host
Write-host -Object "Selected Server: $ServerName"
$MenuOption = Show-Menu -Title "ToolBox" -MenuItemsList $MenuItemsList
switch ($MenuOption)
{
#Quit
'0' {
$MainMenuLoop = $False
}
#Change Selected Server
'1' {
$ServerName = Read-Host -Prompt "Type Server Name"
}
#Test ping
'2' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
Test-Connection -ComputerName $ServerName
Read-Host -Prompt "Press any button to continue. . ."
}
#Replication report
'3' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
Get-ADReplicationPartnerMetadata -Target $ServerName | Select ConsecutiveReplicationFailures,LastReplicationAttempt,LastReplicationSuccess,Partition,Partner,Server
Read-Host -Prompt "Press any button to continue. . ."
}
#Stopped Services
'4' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
$ServiceList = Get-Service -ComputerName $ServerName
$ServiceAutomaticStopped = $ServiceList | Where-Object {($_.StartType -like "Automatic") -and ($_.Status -like "Stopped")}
$ServiceAutomaticStopped |Select Name,DisplayName,Status|FL
Read-Host -Prompt "Press any button to continue. . ."
}
#LDAP test and query
'5' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
try {
$Connection389 = [adsi]"LDAP://$($ServerName):389"
Write-Host -Object " 389 Port: True" -ForegroundColor Green
if (Get-ADUser "AM570707" -Server $ServerName){
Write-Host -Object " LDAP Quey is working" -ForegroundColor Green
}
Else{
Write-Host -Object " LDAP Quey NOT is working!!!" -ForegroundColor Green
}
}
Catch{
Write-Host -Object " 389 Port: False" -ForegroundColor Red
}
try {
$Connection636 = [adsi]"LDAP://$($ServerName):636"
Write-Host -Object " 636 Port: True" -ForegroundColor Green
}
Catch{
Write-Host -Object " 636 Port: False" -ForegroundColor Red
}
Read-Host -Prompt "Press any button to continue. . ."
}
#Get memory and CPU utilization
'6' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
# Processor utilization
$Processor = (Get-WmiObject -ComputerName $ServerName -Class win32_processor -ErrorAction Stop | Measure-Object -Property LoadPercentage -Average | Select-Object Average).Average
Write-Host -Object " Average CPU use (%): $Processor"
# Memory utilization
$ComputerMemory = Get-WmiObject -ComputerName $ServerName -Class win32_operatingsystem -ErrorAction Stop
$Memory = ((($ComputerMemory.TotalVisibleMemorySize - $ComputerMemory.FreePhysicalMemory)*100)/ $ComputerMemory.TotalVisibleMemorySize)
$RoundMemory = [math]::Round($Memory, 2)
Write-Host " Memory in use (%): $Memory"
Read-Host -Prompt "Press any button to continue. . ."
}
#Get Windows Features
'7' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
Get-WindowsFeature -ComputerName $ServerName
Read-Host -Prompt "Press any button to continue. . ."
}
#DNS Test and query
'8' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
try{
$DNSResult = Get-DnsServerResourceRecord -ZoneName "corpnet1.com" -ComputerName $ServerName
Write-Host -Object "DNS is working. Number of objects found: $($DNSResult.count)" -ForegroundColor Green
}
catch{
$ErrorMessage = $($Error[0]) #$_.Exception.Message
Write-Host -Object "DNS is not working. Error message: $ErrorMessage" -ForegroundColor Red
}
Read-Host -Prompt "Press any button to continue. . ."
}
#Share test
'9' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
$ShareFolders = get-WmiObject -class Win32_Share -Computer $ServerName |Select Name,Path
$SharesList = "NETLOGON", "SYSVOL"
ForEach ($Share in $SharesList){
If ($ShareFolders | Where-Object {($_.Name -like "$Share")}){
Write-Host -Object " Share $Share is ok" -ForegroundColor Green
}
ElseIf ($ShareFolders | Where-Object {($_.Name -like "$Share")}){
Write-Host -Object " Share $Share IS NOT ok" -ForegroundColor Red
}
}
Read-Host -Prompt "Press any button to continue. . ."
}
#DCDiag test
'10' {
Clear-Host
Write-host -Object "Selected Server: $ServerName"
$Dcdiag = (Dcdiag.exe /s:$ServerName /fix)
$Dcdiag
Read-Host -Prompt "Press any button to continue. . ."
}
}
}
Nenhum comentário:
Postar um comentário