jumper
hi
a small gift for members of SS64

Code: Select all
Function Get-ss64 {
<#
.Example
PS[1]> Get-ss64
DateTime Author Title Online
-------- ------ ----- -----
07/12/2011 05:21:02 theretard merge True
07/12/2011 05:17:36 theretard FORFILES help False
06/12/2011 15:06:22 theretard avoiding loop False
06/12/2011 03:05:54 theretard %CommonProgramFiles... False
05/12/2011 20:02:05 theretard get file location t... False
...
...
.Example
PS[2]> Get-ss64 -Today
DateTime Author Title Online
-------- ------ ----- -----
07/12/2011 05:21:02 theretard merge False
07/12/2011 05:17:36 theretard FORFILES help False
.Example
PS[3]> get-ss64 | Where { $_.Author -eq 'user' } | select Title,DateTime
.Example
PS[4]> get-ss64 -invoke
# open browser
.Example
PS[5]> get-ss64 | Select -first 3
.INPUTS
none
.OUTPUTS
PSCUSTOMOBJECT
#>
param([Switch]$Today,[Switch]$Invoke)
End{
try{
$objTable = @()
$objweb = New-Object net.webclient
[Xml]$objXml = $objweb.DownloadString('https://ss64.org/extern.php?action=feed&type=atom')
$objTable += $objXml.feed.entry | Select-Object -Property @{
Name = 'DateTime'
Expression = { $_.updated -as [datetime] }
},@{
Name = 'Author'
Expression = { $_ | select -expand author | % { $_.name.'#cdata-section' } }
},@{
Name = 'Title'
Expression = { $_ | select -expand FirstChild | % { $_.'#cdata-section' } }
},@{
Name = 'Online'
Expression = {
$page = ''
$objlink = New-Object net.webclient
$link = $_ | select -Expand link | select -Expand href
$page = $objlink.DownloadString($link)
$page -match 'online'
$objlink.Dispose()
Remove-Variable objlink
}
}
if($Today) {
$objTable | Where { $_.DateTime -eq (date) }
} else { $objTable }
if($Invoke) {
start $($objXml.feed.entry | select -expand link | % { $_.href })[0]
}
}
catch [System.Net.WebException] { return $_.exception.message }
finally{
$objweb.Dispose()
}
}
}