



| When I don’t have any real projects to work on I make up stupid tasks to build to keep me occupied. Here is an other one |
|
<Types> |
So after a period of trail and error I made this line:
| $rss = [xml](new-object System.Net.WebClient).DownloadString($Url) |
And of course ones I found the solution I got the same line from my friend “Google” ..snif….snif.. I also added some forms to make it look good. There were two things I couldn’t figure out.
These questions bug me so if any of you know the answer to the problems above don’t hesitate to comment to this post.
| First the script reeds the feed from the URL with the XML file and then reeds the feeds from the channel in the VAR $feeds . |
Then the form is build with all it’s objects like $listbox, $textbox. Also a handler is added to the form. It detects when Return is pressed and when so the form shows de body of the selected post title.
When I was half way building this script I thought what if I use this feed reader on my servers to read an internal blog. Than I could give my servers commands to execute trough a blog…. Ok it is far fetched but I think it can work and that’s my point, Powershell has some boundaries but most of them are in your head I think.
# Select a post title and press return to get the # post body text. $Url = "http://blogs.msdn.com/powershell/rss.xml" $rss = [xml](new-object System.Net.WebClient).DownloadString($Url) $feeds = $rss.rss.channel.item [reflection.assembly]::LoadWithPartialName("System.Windows.Forms") $form = new-object windows.forms.form $form.Text = "RSS titles" $form.StartPosition = "CenterScreen" $form.Size = New-Object System.Drawing.Size(600,400) $form.KeyPreview = $true # initialize listbox $listbox = new-object windows.forms.listbox $listbox.Width = 500 $listbox.Location = New-Object System.Drawing.Size(10,10) # initialize textbox $textbox = new-object system.windows.forms.textbox $textbox.Location = New-Object System.Drawing.Size(10,120) $textbox.Multiline = $true $textbox.Width = 500 $textbox.Height = 200 $textbox.ScrollBars = "Vertical" $textbox.Visible = $false $index = -1 $form.add_keydown({if ($_.KeyCode -eq "Return") { $index = $listbox.selectedindex if ($index -gt -1) { #--------------start one line------------# $textbox.text = $feeds[$index] | Select-Object Description | ConvertTo-Html #--------------end one line--------------# $textbox.Visible = $true } } }) # Fill teh listbox with the RSS titles foreach ($feed in $feeds) { $listbox.items.add($feed.title) } # Add alle objects to the form $form.controls.Add($listbox) $form.Controls.Add($textbox) $form.ShowDialog() |




Here is a small script for something you could do with any other tool but is was fun building it in Powershell. I needed to scan a few subnets in our infrastructure. I know there are tools who can do this task but I thought why not use powershell.
This is what I made of it. The function pinger is straight forward. It does a ping and checks if the output of the pinger function is success. If so the host is up and running otherwise the host is down.
I ran in to a small problem when I wanted to export the output of this powershell script to Microsoft Excel because, I don´t live in the US, my local settings are NL and not en-US. If you use the code found on the Internet you get a error message like this one.
|
Exception calling "Add" with "0" argument(s): "Old format or invalid |
The code below is unusable if you don’t have you local settings set to
en-US.
$a = New-Object -comobject Excel.Application $a.Visible = $True $b = $a.Workbooks.Add() $c = $b.Worksheets.Item(1) $c.Cells.Item(1,1) = "A value in cell A1." $b.SaveAs("C:\Scripts\Test.xls") $a.Quit() |
The code used in my code fixes this by using the invoker function to force the use of en-US in the Excel workbook. I found this invoker function on the Internet but I don’t know who wrote it so thanks to mister/miss X.
function pinger { param($ip) $ping = New-Object System.Net.NetworkInformation.Ping $alive = $ping.send($ip) if ($alive.Status -eq "Success") { $out = $ip + ", Is alive" return $out } else { $out = $ip + ", Is dead" return $out } } function Invoke([object]$m, [string]$method, $parameters) { $ciUS = [System.Globalization.CultureInfo]'en-US' #----------one line start-------------------------- $m.PSBase.GetType().InvokeMember( $method, [Reflection.BindingFlags]::InvokeMethod, $null, $m, $parameters,$ciUS) #----------one line end---------------------------- } #----------------User settings------------------------- $count = 1 $Max = 10 $ipbase="10.10.10." #------------------------------------------------------ $objExcel = New-object -com Excel.Application $objExcel.visible = $True $objWorkbook = Invoke $objExcel.Workbooks Add $objWorksheet = $objWorkbook.Worksheets.Item(1) $objWorksheet.Cells.Item($count,1).Formulalocal = "IP number" $objWorksheet.Cells.Item($count,2).Formulalocal = "State" while($count -le $max) { $out=pinger $ipbase$count $parts=$out.Split(",") $objWorksheet.Cells.Item($count+1,1).Formulalocal = $parts[0] $objWorksheet.Cells.Item($count+1,2).Formulalocal = $parts[1] $count++ } Invoke $objWorkbook SaveAs "C:\Ping states.xlsx" > $null Invoke $objWorkbook Close 0 > $null $objExcel.Quit() |




Found this Powershell toolbar trough a co-worker.
This Powershell toolbar gives you quick access to Powershell resources like:
You can download the toolbar here!




![]() |
Marcus Nasarek has written an article for Linux-magazine about BASH and MS PowerShell. It’s nice to read because he took the time to get to know MS Powershell.
Read at source: Linux-magazine




![]()
I personally think that Powershell is one of the best initiatives Microsoft has launched in the last few years. But anyone who is hoping to start with Powershell V2 soon will be disappointed after reading this post.
This post of the PowershellTeam gives us an estimate of when Powershell V2 is to be released. Only no specific date is mentioned because that information is not to be released at this time. But from the post I get the impression that its no sooner than mid 2009 Powershell V2 is to be released.
And now I’m a bit sad because I’m a big Powershell enthusiast.


More Options ...
Categories
Tag Cloud
Blog RSS
Comments RSS

Void « Default
Life
Earth
Wind
Water
Fire
Light 