Michael's profileThe Old Dogs Scripting B...BlogListsNetworkMore ![]() | Help |
|
|
February 27 Search for file type on a list of ComputersThis is one of the very first things I tried to do with PowerShell. It searches a list of computers
for Access Data bases and prints the ones it finds to an Excel spreadsheet.
#<--- Start Script --------->
$a = Get-Date -format g
$row = 2 $xl = New-Object -c excel.application $xl.visible = $True $wb = $xl.workbooks.add() $sh = $wb.sheets.item(1) $sh.Range("A1:T1").Font.Bold = $true $sh.Range("A:A").Font.Bold = $True $sh.Cells.Item(1, 1) = "Computer Name" $sh.Cells.Item(1, 2) = "Date Run" + $a $sh.Cells.Item(1, 3) = "FullName" $sh.Cells.Item(1, 4) = "Length" $sh.Cells.Item(1, 5) = "Owner" $sh.Cells.Item(1, 6) = "Extension" $sh.Cells.Item(1, 7) = "LastAccessTime" $sh.Cells.Item(1, 8) = "CreationTime" $sh.Cells.Item(1, 9) = "Group Access" # you will need a list of computers, one computer name per line
$computerlist = Get-Content 'c:\scripts\Servers.txt' foreach ($srv in $computerlist) { $sh.Cells.Item($row, 1) = $srv $response = Get-WmiObject -query "Select * From Win32_PingStatus Where Address = '$srv'" if( ($response -eq $null) -or ($response.StatusCode -ne 0)) { $sh.Cells.Item($row, 2).Font.ColorIndex = 3 $sh.Cells.Item($row, 2) = "Does Not Ping" $row++ } else { if ($response.TimeToLive -le 64) { $sh.Cells.Item($row, 2).Font.ColorIndex = 5 $sh.Cells.Item($row, 2) = "probably is a Unix host" $row++ } Else { # Change the path and the extension. If you want all files, remove the -include *.??? # This might be faster get-childitem -path \\$srv\c$ -filter "*.mdb" -r -ea continue | Get-ChildItem -path \\$srv\c$ -recurse -include *.mdb -ea continue |
foreach { $file = New-Object -TypeName System.Management.Automation.PSObject Add-Member -InputObject $file -MemberType NoteProperty -Name "FullName" -Value $_.Fullname Add-Member -InputObject $file -MemberType NoteProperty -Name "LastAccessTime" -Value $_.LastAccessTime Add-Member -InputObject $file -MemberType NoteProperty -Name "LastWriteTime" -Value $_.LastWriteTime $acl = Get-Acl -Path $_.FullName Add-Member -InputObject $file -MemberType NoteProperty -Name "Owner" -Value $acl.Owner Add-Member -InputObject $file -MemberType NoteProperty -Name "AccessToString" -Value $acl.AccessToString Add-Member -InputObject $file -MemberType NoteProperty -Name "Group" -Value $acl.Group $sh.Cells.Item($row, 3) = $_.FullName $sh.Cells.Item($row, 4) = $_.Length $sh.Cells.Item($row, 5) = $acl.Owner $sh.Cells.Item($row, 6) = $_.Extension $sh.Cells.Item($row, 7) = $_.LastAccessTime $sh.Cells.Item($row, 8) = $_.CreationTime $sh.Cells.Item($row, 9) = $acl.Group $sh.Cells.EntireColumn.AutoFit() $row++ } } } } $wb.SaveAs("C:\temp\find_files.xls")
# close and release resources $wb.close($false) $xl.quit() spps -n excel #---- End Script --------------> February 19 Last Boot up Time AND SP install timeI wanted to know the last bootup time and the last time a service pack installed AND
I wanted the output as a HTML file.
Here are the codes for the colors that I used:
# Red = #FF0000
# Green = #00FF00 # Blue = #0000FF # Cyan (blue and green) = #00FFFF # Magenta (red and blue) = #FF00FF # Yellow (red and green) = #FFFF00 < ---- start script --------------------------------------------->
clear $pingResults =("C:\Scripts\PingResults\pingResults.HTM") $RunDate = (get-date).tostring("MM_dd_yyyy") $PingTime = (Get-Date -format 'hh:mm') #Write the preamble of the report Set-Content -Path $pingResults ("<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0//EN http://www.w3.org/TR/REC-html40/strict.dtd>") #<---- all one line Add-Content -Path $pingResults ("<html> <p>") Add-Content -Path $pingResults ("<head> <p>") Add-Content -Path $pingResults ("<title> Ping Results </title>") Add-Content -Path $pingResults ("</head>") Add-Content -Path $pingResults ("<h3>Report Generated " + $RunDate + " @ " + $PingTime + "</h3> <p>") $PingMachines = Gc "C:\MachineList.txt" ForEach($MachineName In $PingMachines) {$PingStatus = Gwmi Win32_PingStatus -Filter "Address = '$MachineName'" | Select-Object StatusCode If ($PingStatus.StatusCode -eq 0) { $wmi = gwmi -Class Win32_OperatingSystem -EA silentlycontinue -ComputerName $MachineName $lastBootTime = $wmi.ConvertToDateTime($wmi.LastBootUpTime) $t1 = Get-WmiObject -Class Win32_QuickFixEngineering -EA silentlycontinue -ComputerName $MachineName | Sort InstalledOn -Descending | Select InstalledOn -First 1 Add-Content -Path $pingResults ("<pre><h3>Server Name: <FONT color = #00FF00>" + $MachineName + "</FONT></h3> Last Boot Time: " + $lastBootTime + " Latest installed update: " + $t1 + "</pre>") #<---- all one line $lastBootTime = " " } Else { Add-Content -Path $pingResults ("<pre><h3>Server Name: <FONT color = #FF0000>" + $MachineName + "</FONT></h3></pre>")} #<---- all one line } # < ---------- End Script ----------------> February 18 Handy script to delete files from the temp directoryThis is handy. It will delete all files of the given extension from the temp folder that are
Get-ChildItem -Path $env:Temp | where{($_.LastAccessTime -lt
Change .tmp to another extension and change the number of days to match your needs. Remove the -Whatif if you like the results. |
|
|