Академический Документы
Профессиональный Документы
Культура Документы
################################################################################
######
Write-Host `n
Write-Host Choose folder to create output files -ForegroundColor yellow
function Read-FolderBrowserDialog([string]$Message, [string]$InitialDirectory)
{
$app = New-Object -ComObject Shell.Application
$folder = $app.BrowseForFolder(0, $Message, 0, $InitialDirectory)
if ($folder) { return $folder.Self.Path } else { return '' }
}
$directory = Read-FolderBrowserDialog ("Select your folder to save output files"
)
################################################################################
######
#get only date and time
$a = Get-Date
$Date = $a.ToShortDateString()
$Time = $a.ToShortTimeString()
#Creating new excel object
start-sleep -Seconds 3
Write-Host `n
Write-Host "Please wait.. " -ForegroundColor magenta
$excel = New-Object -ComObject excel.application
$excel.visible = $False
$workbook = $excel.Workbooks.Add()
$workbook.Worksheets.Add() | Out-Null
$workbook.Worksheets.Add() | Out-Null
$workbook.Worksheets.Add() | Out-Null
$excel.DisplayAlerts = $False
$excel.Rows.Item(1).Font.Bold = $true
$value1= $workbook.Worksheets.Item(1)
$value1.Name = 'Server Information'
$value1.Cells.Item(1,1) = "Machine Name"
$value1.Cells.Item(1,2) = "OS Running"
$value1.Cells.Item(1,3) = "Total Physical Memory"
$value1.Cells.Item(1,4) = "Last Boot Time"
$value1.Cells.Item(1,5) = "Bios Version"
$value1.Cells.Item(1,6) = "Serial Number"
$value1.Cells.Item(1,7) = "CPU Name"
$value1.Cells.Item(1,8) = "CPU Count"
$value1.Cells.Item(1,9) = "CPU Max Speed"
$value1.Cells.Item(1,10) = "Disk Info"
$value1.Cells.Item(1,11) = "System Model"
$value1.Cells.Item(1,12) = "Manufacturer"
$value1.Cells.Item(1,13) = "Description"
$value1.Cells.Item(1,14) = "PrimaryOwnerName"
$value1.Cells.Item(1,15) = "Systemtype"
#Network details
$sheet2 = $workbook.worksheets.item(2)
$sheet2.Name = 'Network Details'
$sheet2.Rows.Item(1).Font.Bold = $true
$sheet2.Cells.Item(1,1) = "Machine Name"
$sheet2.Cells.Item(1,2) = "Description"
$sheet2.Cells.Item(1,3) = "IPAddress"
$sheet2.Cells.Item(1,4)
$sheet2.Cells.Item(1,5)
$sheet2.Cells.Item(1,6)
$sheet2.Cells.Item(1,7)
$sheet2.Cells.Item(1,8)
=
=
=
=
=
"DHCPServer"
"DefaultIPGateway"
"DNSDomain"
"DHCPEnabled"
"MACAddress"
#Pagefile details
$sheet3 = $workbook.worksheets.item(3)
$sheet3.Name = 'PageFile Details'
$sheet3.Rows.Item(1).Font.Bold = $true
$sheet3.Cells.Item(1,1) = "Machine Name"
$sheet3.Cells.Item(1,2) = "Path"
$sheet3.Cells.Item(1,3) = "Initial PageFile"
$sheet3.Cells.Item(1,4) = "Maximum PageFile"
$sheet3.Cells.Item(1,5) = "Total Memory in GB"
#Installed apps
$sheet5 = $workbook.worksheets.item(4)
$sheet5.Name = 'Installed Apps'
$sheet5.Rows.Item(1).Font.Bold = $true
#miscellenious details
$sheet4 = $workbook.worksheets.item(5)
$sheet4.Name = 'Miscellenious Details'
$sheet4.Rows.Item(1).Font.Bold = $true
$sheet4.Cells.Item(1,1) = "Machine Name"
$sheet4.Cells.Item(1,2) = "TimeZone"
$sheet4.Cells.Item(1,3) = "StandardName"
$sheet4.Cells.Item(1,4) = "BootConfiguration"
$sheet4.Cells.Item(1,5) = "Administrators"
#Paged Pool Details
$sheet6 = $workbook.worksheets.item(6)
$sheet6.Name = 'Paged Pool Memory Details'
$sheet6.Rows.Item(1).Font.Bold = $true
$sheet6.cells.item(1,1) = "Server Name"
$sheet6.cells.item(1,2) = "PoolUsageMaximum configured(Yes or No)"
$row = 2
$sheet2row = 2
$Page2row = 2
$misc1row = 2
$serverCount123 = 2
$sheet6column = 2
$sheet6row = 2
$appscolumn = 1
$serverCount = 1
write-host `n
Write-Host "Excel application created successfully. Writing data to rows and col
umns.." -ForegroundColor magenta
foreach ($computer in $filepath) {
write-host `n
if (Test-Connection -ComputerName $computer -Quiet)
{
write-host Processing server $computer -ForegroundColor yellow
$column = 1
$column) = $computer
$column) = $OSRunning
$column) = "$TotalMem GB"
$column) = $uptime
$column) = $BiosVersion
$column) = "$SerialNumber"
$column) = $CPUInfo
$column) = $CPUCount
$column) = $CPUMaxSpeed
$driveStr = ""
foreach($drive in $drives)
{
if ($drive.size -ne $null) {
$column) = $driveStr
$column) = $Model
$column) = $Manufacturer
$column) = $Description
$column) = $PrimaryOwnerName
$column) = $Systemtype
#network details
$networkinfo = Get-CimInstance -ClassName win32_networkadapterconfiguration -Cim
Session $Session | where {$_.ipenabled -eq "true" -and $_.IPAddress -ne "0.0.0.0
"}
$Description = $networkinfo.description
$IPAddress = $networkinfo.IPAddress
$DHCPServer = $networkinfo.dhcpserver
$DefaultIPGateway = $networkinfo.DefaultIPGateway
$DNSDomain = $networkinfo.DNSDomain
$DHCPEnabled = $networkinfo.DHCPEnabled
$MACAddress = $networkinfo.MACAddress
$sheet2column = 1
$sheet2.Cells.Item($sheet2row, $sheet2column) = $computer
$sheet2column++
$sheet2.Cells.Item($sheet2row, $sheet2column) = $Description
$sheet2column++
$sheet2.Cells.Item($sheet2row, $sheet2column) = $IPAddress
$sheet2column++
$sheet2.Cells.Item($sheet2row, $sheet2column) = $DHCPServer
$sheet2column++
$sheet2.Cells.Item($sheet2row, $sheet2column) = $DefaultIPGateway
$sheet2column++
$sheet2.Cells.Item($sheet2row, $sheet2column) = $DNSDomain
$sheet2column++
$page2column) = $computer
$page2column) = $captionn
$page2column) = $inipfconfigured
$page2column) = $maxPFconfigured
$page2column) = "$TotalMem GB"
$usedRange2 = $sheet3.UsedRange
$usedRange2.EntireColumn.AutoFit() | Out-Null
#Miscellenious Details
$misc = Get-CimInstance -ClassName win32_TimeZone -CimSession $Session
$timezone = $misc.caption
$standardname = $misc.StandardName
$bootconfig = (Get-CimInstance -ClassName Win32_BootConfiguration -CimSession $S
ession).ConfigurationPath
###############################################################################
function get-localusers {
param(
[Parameter(Mandatory=$true,valuefrompipeline=$true)]
[string]$strComputer)
begin {}
Process {
$adminlist =""
#$powerlist =""
$computer = [ADSI]("WinNT://" + $strComputer + ",computer")
$AdminGroup = $computer.psbase.children.find("Administrators")
#$powerGroup = $computer.psbase.children.find("Power Users")
$Adminmembers= $AdminGroup.psbase.invoke("Members") | %{$_.GetType().Inv
okeMember("Name", 'GetProperty', $null, $_, $null)}
#$Powermembers= $PowerGroup.psbase.invoke("Members") | %{$_.GetType().In
vokeMember("Name", 'GetProperty', $null, $_, $null)}
foreach ($admin in $Adminmembers) { $adminlist = $adminlist + $admin + "
," }
#foreach ($poweruser in $Powermembers) { $powerlist = $powerlist + $powe
ruser + "," }
#$Computer = New-Object psobject
#$computer | Add-Member noteproperty ComputerName $strComputer
#$computer | Add-Member noteproperty Administrators $adminlist
#$computer | Add-Member noteproperty PowerUsers $powerlist
Write-Output $adminlist
}
end {}
}
$admins = get-localusers $computer
################################################################################
#######
$misc1column = 1
$sheet4.Cells.Item($misc1row,$misc1column) = $computer
$misc1column++
$sheet4.Cells.Item($misc1row,$misc1column) = $timezone
$misc1column++
$sheet4.Cells.Item($misc1row,$misc1column) = $standardname
$misc1column++
$sheet4.Cells.Item($misc1row,$misc1column) = $bootconfig
$misc1column++
$sheet4.Cells.Item($misc1row,$misc1column) = $admins
$misc1row++
$usedRange3 = $sheet4.UsedRange
$usedRange3.EntireColumn.AutoFit() | Out-Null
#Installed Apps
$sheet5.Cells.Item(1,$serverCount) = "$computer"
$serverCount++
$appsrow = 2
$RegBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.Reg
istryHive]::LocalMachine,$Computer)
$RegUninstall = $RegBase.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\U
ninstall')
$apps123 = $RegUninstall.GetSubKeyNames() |
ForEach-Object {
($RegBase.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$_")).
GetValue('DisplayName')
}