<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Richard Siddaway's Blog</title><link>http://msmvps.com/blogs/richardsiddaway/default.aspx</link><description>Of PowerShell and Other Things</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Multiple test files</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/08/multiple-test-files.aspx</link><pubDate>Sun, 08 Nov 2009 11:03:12 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738368</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738368</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/08/multiple-test-files.aspx#comments</comments><description>&lt;p&gt;Back here &lt;a title="http://msmvps.com/blogs/richardsiddaway/archive/2009/11/05/creating-temporary-files.aspx" href="http://msmvps.com/blogs/richardsiddaway/archive/2009/11/05/creating-temporary-files.aspx"&gt;http://msmvps.com/blogs/richardsiddaway/archive/2009/11/05/creating-temporary-files.aspx&lt;/a&gt; or &lt;a title="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2595.entry" href="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2595.entry"&gt;http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2595.entry&lt;/a&gt; I showed how to create temporary test files.&lt;/p&gt;  &lt;p&gt;We can simply create multiple test files like this&lt;/p&gt;  &lt;p&gt;1..10 | foreach {new-tempfile -path c:\test\test1 -size $(Get-Random -Maximum 1mb -Minimum 1kb)}&lt;/p&gt;  &lt;p&gt;A one line PowerShell script that generates 10 files in the given folder with random names and sizes.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a007594e-76a6-46cc-b742-f4051ac8ad8e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/files" rel="tag"&gt;files&lt;/a&gt;,&lt;a href="http://technorati.com/tags/temporary" rel="tag"&gt;temporary&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738368" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>PowerShell WMI events</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-wmi-events.aspx</link><pubDate>Sat, 07 Nov 2009 21:29:51 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738276</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738276</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-wmi-events.aspx#comments</comments><description>&lt;p&gt;In my previous post ( &lt;a title="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry" href="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry"&gt;http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry&lt;/a&gt;&amp;#160; or &lt;a title="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry" href="http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry"&gt;http://richardsiddaway.spaces.live.com/blog/cns!43CFA46A74CF3E96!2598.entry&lt;/a&gt; ) I started to look at WMI events in PowerShell v2.&amp;#160; The win32_process class was used but all that showed us was that a process had started. We need a bit more information.&amp;#160; A bit of digging brought up the Win32_ProcessStartTrace class that seems to do what we want.&amp;#160; &lt;/p&gt;  &lt;p&gt;Register-WMIEvent allows us to specify the class we want to use rather than a query – however if we try that we don’t get anything returned&amp;#160; - oops. &lt;/p&gt;  &lt;p&gt;Looking through the help for Register-WMIEvent shows that we have the possibility of performing an action when the event occurs.&amp;#160; The action scriptblock can use a number of variables including $Event, $EventSubscriber, $Sender, $SourceEventArgs, and $SourceArgs automatic variables.&amp;#160; Wanting to understand these variables I tried dumping it though get-member.&amp;#160; &lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c1016218-f80... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event | gm&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The subscription runs as a PowerShell job. Using the opening of Notepad to trigger the event we can see that data is returned.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Job &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c1016218-f80... Running&amp;#160;&amp;#160;&amp;#160; True&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event | gm &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And see that we have a few properties to play with.&amp;#160; ComputerName may come in useful if we are dealing with remote machines.&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 2 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.Automation.PSEventArgs &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;Equals&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool Equals(System.Object obj)       &lt;br /&gt;GetHashCode&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; int GetHashCode()       &lt;br /&gt;GetType&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; type GetType()       &lt;br /&gt;ToString&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; string ToString()       &lt;br /&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String ComputerName {get;}       &lt;br /&gt;EventIdentifier&amp;#160; Property&amp;#160;&amp;#160; System.Int32 EventIdentifier {get;}       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Management.Automation.PSObject MessageData {get;}       &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Guid RunspaceId {get;}       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object Sender {get;}       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object[] SourceArgs {get;}       &lt;br /&gt;SourceEventArgs&amp;#160; Property&amp;#160;&amp;#160; System.EventArgs SourceEventArgs {get;}       &lt;br /&gt;SourceIdentifier Property&amp;#160;&amp;#160; System.String SourceIdentifier {get;}       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.DateTime TimeGenerated {get;}       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;The properties look similar to those we saw in the last post.&amp;#160; Lets dig into SourceEventArgs&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event.SourceEventArgs | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8d4246a5-5f8... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Job &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8d4246a5-5f8... Running&amp;#160;&amp;#160;&amp;#160; True&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 3 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.EventArrivedEventArgs &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;Equals&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool Equals(System.Object obj)       &lt;br /&gt;GetHashCode Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; int GetHashCode()       &lt;br /&gt;GetType&amp;#160;&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; type GetType()       &lt;br /&gt;ToString&amp;#160;&amp;#160;&amp;#160; Method&amp;#160;&amp;#160;&amp;#160;&amp;#160; string ToString()       &lt;br /&gt;Context&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Object Context {get;}       &lt;br /&gt;NewEvent&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Management.ManagementBaseObject NewEvent {get;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Only thing here that look interesting is NewEvent&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Register-WmiEvent -Query &amp;quot;Select * FROM Win32_ProcessStartTrace&amp;quot; -Action {$Event.SourceEventArgs.NewEvent | gm} &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; State&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HasMoreData&amp;#160;&amp;#160;&amp;#160;&amp;#160; Location&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command      &lt;br /&gt;--&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----------&amp;#160;&amp;#160;&amp;#160;&amp;#160; --------&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -------       &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0857a744-1d3... NotStarted False&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Event.SourceEventArgs... &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Receive-Job -Id 4 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; TypeName: System.Management.ManagementBaseObject#\Win32_ProcessStartTrace &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MemberType Definition      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------- ----------       &lt;br /&gt;ParentProcessID&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 ParentProcessID {get;set;}       &lt;br /&gt;ProcessID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 ProcessID {get;set;}       &lt;br /&gt;ProcessName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String ProcessName {get;set;}       &lt;br /&gt;SECURITY_DESCRIPTOR Property&amp;#160;&amp;#160; System.Byte[] SECURITY_DESCRIPTOR {get;set;}       &lt;br /&gt;SessionID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt32 SessionID {get;set;}       &lt;br /&gt;Sid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Byte[] Sid {get;set;}       &lt;br /&gt;TIME_CREATED&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.UInt64 TIME_CREATED {get;set;}       &lt;br /&gt;__CLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __CLASS {get;set;}       &lt;br /&gt;__DERIVATION&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String[] __DERIVATION {get;set;}       &lt;br /&gt;__DYNASTY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __DYNASTY {get;set;}       &lt;br /&gt;__GENUS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Int32 __GENUS {get;set;}       &lt;br /&gt;__NAMESPACE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __NAMESPACE {get;set;}       &lt;br /&gt;__PATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __PATH {get;set;}       &lt;br /&gt;__PROPERTY_COUNT&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.Int32 __PROPERTY_COUNT {get;set;}       &lt;br /&gt;__RELPATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __RELPATH {get;set;}       &lt;br /&gt;__SERVER&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __SERVER {get;set;}       &lt;br /&gt;__SUPERCLASS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property&amp;#160;&amp;#160; System.String __SUPERCLASS {get;set;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we have got to the information we need.&amp;#160; So how can we use this.&amp;#160; Up to now we have just allowed the job to run and then picked the data from the job.&amp;#160; One option is to write the data to the prompt as shown in this example&amp;#160; &lt;a title="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx" href="http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx"&gt;http://blogs.msdn.com/powershell/archive/2009/08/30/exploring-wmi-with-powershell-v2.aspx&lt;/a&gt;.&amp;#160; A lot of this digging was because I didn’t understand how this was put together.&amp;#160; PowerShell really is the best way to discover how to use PowerShell!!&lt;/p&gt;  &lt;p&gt;This gets us to this script which is modified from the PowerShell Team blog&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#006400;"&gt;## query&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$q&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Select * from Win32_ProcessStartTrace&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#006400;"&gt;## action script block&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$a&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SourceEventArgs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;NewEvent&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Computer {0},ID {1}, Name &amp;quot;{2}&amp;quot;, Time {3}, Source {4}&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-f&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sender&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Scope&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Path&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Server&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ProcessId&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;`               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$eSEANE&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ProcessName&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;TimeGenerated&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Event&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SourceIdentifier&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Register-WmiEvent&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Query&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$q&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-SourceIdentifier&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Process Start&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Action&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$a&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Turns out the ComputerName parameter doesn’t work but a comment on the blog shows how Jeffrey Hicks solved the problem.&lt;/p&gt;  &lt;p&gt;What we get now is a listing at our PowerShell prompt&amp;#160; when a new process starts. We can keep working and the data comes through when the prompt is idle.&lt;/p&gt;  &lt;p&gt;Next we will look at closing a process and recording the data in a log&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0308d51f-7878-4d76-baf1-7cbb5c9ffcaa" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Events" rel="tag"&gt;Events&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738276" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>PowerShell Eventing</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-eventing.aspx</link><pubDate>Sat, 07 Nov 2009 14:41:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738208</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738208</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/07/powershell-eventing.aspx#comments</comments><description>&lt;p&gt;This isn’t the latest sport added for the 2012 Olympics but a way to dig deeper into what is happening on your machine.&amp;#160; There is a continuous stream of events occurring on a computer – programs stop or start, files open or close etc etc.&amp;#160; Some, but all, of these events are recorded in the event logs. If we want to understand what is happening we can track this using the PowerShell Event engine that is introduced in PowerShell v2.&lt;/p&gt;  &lt;p&gt;Three types of events can be registered – PowerShell engine, .NET and WMI using the following cmdlets respectively&lt;/p&gt; Register-EngineEvent   &lt;br /&gt;Register-ObjectEvent   &lt;br /&gt;Register-WmiEvent   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We can use the following cmdlets to discover the events that actually happen.&lt;/p&gt;  &lt;p&gt;Get-Event    &lt;br /&gt;Get-EventSubscriber     &lt;br /&gt;New-Event     &lt;br /&gt;Remove-Event     &lt;br /&gt;Unregister-Event     &lt;br /&gt;Wait-Event &lt;/p&gt;  &lt;p&gt;We’ll start by looking at WMI events. We can use Register-WmiEvent to register the event we want to track. In this case we want to know when new processes are started. We can create an event registration using&lt;/p&gt;  &lt;p align="left"&gt;Register-WmiEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -Query &amp;quot;Select * from __instancecreationevent within 5 where targetinstance isa &amp;#39;Win32_Process&amp;#39;&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -MessageData &amp;quot;Process Started&amp;quot; -SourceIdentifier &amp;quot;New Process&amp;quot; &lt;/p&gt;  &lt;p&gt;__instancecreationevent&amp;#160; is a WMI System Class.&amp;#160; 5 refewrs to the system being scanned every 5 seconds&lt;/p&gt;  &lt;p&gt;WMI System classes are created on a per WMI namespace basis i.e. a new set of system classes is created for each WMI namespace. The full list of WMI system classes can be seen at &lt;a href="http://msdn.microsoft.com/en-us/library/aa394583(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394583(VS.85).aspx&lt;/a&gt; or can be browsed using PowerGUI&amp;#39;s WMI browser. &lt;/p&gt;  &lt;p&gt;We can view the system classes relating to WMI events. &lt;/p&gt;  &lt;p&gt;Get-WmiObject -Namespace &amp;#39;root\cimv2&amp;#39; -List &amp;quot;__*Event&amp;quot;&lt;/p&gt;  &lt;p&gt;and we will see that there is a __InstanceDeletionEvent class as well.&amp;#160; if we want to track process creation and deletion (program open and close) we will need to register this as well.&lt;/p&gt;  &lt;p align="left"&gt;Register-WmiEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -Query &amp;quot;Select * from __instancedeletionevent within 5 where targetinstance isa &amp;#39;Win32_Process&amp;#39;&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -MessageData &amp;quot;Process Stopped&amp;quot; -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p align="left"&gt;When we run these commands nothing seems to happen. We can see the event registrations (or subscriptions)&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-EventSubscriber &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;SubscriptionId&amp;#160;&amp;#160; : 1      &lt;br /&gt;SourceObject&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;EventName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : EventArrived       &lt;br /&gt;SourceIdentifier : New Process       &lt;br /&gt;Action&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :       &lt;br /&gt;HandlerDelegate&amp;#160; :       &lt;br /&gt;SupportEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False       &lt;br /&gt;ForwardEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;SubscriptionId&amp;#160;&amp;#160; : 2      &lt;br /&gt;SourceObject&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;EventName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : EventArrived       &lt;br /&gt;SourceIdentifier : End Process       &lt;br /&gt;Action&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; :       &lt;br /&gt;HandlerDelegate&amp;#160; :       &lt;br /&gt;SupportEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False       &lt;br /&gt;ForwardEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160; : False&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;If we start notepad and and then check the process&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Get-Process notepad | select name, starttime &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StartTime      &lt;br /&gt;----&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ---------       &lt;br /&gt;notepad&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 07/11/2009 14:20:19&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;we can compare this to the event information&lt;/p&gt;  &lt;p align="left"&gt;PS&amp;gt; Get-Event -SourceIdentifier &amp;quot;New Process&amp;quot;&lt;/p&gt;  &lt;p align="left"&gt;&lt;font face="Courier New"&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; :      &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2a581963-55cd-4e46-82ab-ddb6a38fa9a2       &lt;br /&gt;EventIdentifier&amp;#160; : 27       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;SourceEventArgs&amp;#160; : System.Management.EventArrivedEventArgs       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}       &lt;br /&gt;SourceIdentifier : New Process       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; : 07/11/2009 14:20:23       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Process Started&lt;/font&gt;&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Which doesn’t seem to tell is much beyond the fact that a process has started – it specifically doesn’t tell us which process has started. &lt;/p&gt;  &lt;p&gt;Similarly when we stop a process&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Stop-Process -Name notepad    &lt;br /&gt;PS&amp;gt; Get-Event -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;ComputerName&amp;#160;&amp;#160;&amp;#160;&amp;#160; :      &lt;br /&gt;RunspaceId&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : 2a581963-55cd-4e46-82ab-ddb6a38fa9a2       &lt;br /&gt;EventIdentifier&amp;#160; : 29       &lt;br /&gt;Sender&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : System.Management.ManagementEventWatcher       &lt;br /&gt;SourceEventArgs&amp;#160; : System.Management.EventArrivedEventArgs       &lt;br /&gt;SourceArgs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}       &lt;br /&gt;SourceIdentifier : End Process       &lt;br /&gt;TimeGenerated&amp;#160;&amp;#160;&amp;#160; : 07/11/2009 14:27:47       &lt;br /&gt;MessageData&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Process Stopped&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;We get a message that the process has stopped but no identification as to which process.&lt;/p&gt;  &lt;p&gt;Events only exist in the current session and the subscriptions are lost if the PowerShell session is closed.&lt;/p&gt;  &lt;p&gt;Couple of quick points&lt;/p&gt;  &lt;p&gt;The event queue can be quickly cleaned using&lt;/p&gt;  &lt;p&gt;Get-Event | Remove-Event.&lt;/p&gt;  &lt;p&gt;We can remove event subscriptions using&lt;/p&gt;  &lt;p&gt;Unregister-Event -SourceIdentifier &amp;quot;New Process&amp;quot;    &lt;br /&gt;Unregister-Event -SourceIdentifier &amp;quot;End Process&amp;quot;&lt;/p&gt;  &lt;p&gt;We will dig further into the eventing capabilities in future posts&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eef89573-51ab-45b8-b962-6e797450bc16" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WMI" rel="tag"&gt;WMI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Events" rel="tag"&gt;Events&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738208" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+WMI/default.aspx">PowerShell and WMI</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>SQL Server books</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/06/sql-server-books.aspx</link><pubDate>Fri, 06 Nov 2009 15:55:01 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1738030</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1738030</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/06/sql-server-books.aspx#comments</comments><description>&lt;p&gt;A couple of SQL Server books that I would recommend having been involved with both of them.&lt;/p&gt;  &lt;p&gt;First up is SQL Server 2008 Administration in Action by Rod College (Manning - &lt;a title="http://www.manning.com/colledge/" href="http://www.manning.com/colledge/"&gt;http://www.manning.com/colledge/&lt;/a&gt;) which I reviewed several times before publication. It covers SQL Server from sizing and installation, through configuration and day-to-day administration.&amp;#160; Lots of good best practice information written in a easy to read style.&lt;/p&gt;  &lt;p&gt;The second is SQL Server MVP Deep Dives (Manning - &lt;a title="http://www.manning.com/nielsen/" href="http://www.manning.com/nielsen/"&gt;http://www.manning.com/nielsen/&lt;/a&gt;) to which I contributed a chapter on PowerShell and SQL Server. This book has contributions from 53 MVPs (mainly SQL Server) and is edited by Paul Nielsen, Kalen Delaney, Greg Low, Adam Machanic, Paul S. Randal, and Kimberly L. Tripp.&amp;#160; The royalties from the book go to War Child International - (&lt;a href="http://www.warchild.org"&gt;www.warchild.org&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Two good books to add to your SQL Server library&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:758a77f9-5c50-42b0-ae40-fcc6964b6b6e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Books" rel="tag"&gt;Books&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server" rel="tag"&gt;SQL Server&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1738030" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+SQL+Server/default.aspx">PowerShell and SQL Server</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Books/default.aspx">Books</category></item><item><title>Removing empty folders</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/06/removing-empty-folders.aspx</link><pubDate>Fri, 06 Nov 2009 11:49:02 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737987</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1737987</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/06/removing-empty-folders.aspx#comments</comments><description>&lt;p&gt;I blogged about this a long time back. As part of my tidy up program (me? tidy up? - - stop laughing!) I’ve been moving scripts into PowerShell v2 modules.&amp;#160; I’ve added these three functions to my FileFunctions module.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;012               &lt;br /&gt;013               &lt;br /&gt;014               &lt;br /&gt;015               &lt;br /&gt;016               &lt;br /&gt;017               &lt;br /&gt;018               &lt;br /&gt;019               &lt;br /&gt;020               &lt;br /&gt;021               &lt;br /&gt;022               &lt;br /&gt;023               &lt;br /&gt;024               &lt;br /&gt;025               &lt;br /&gt;026               &lt;br /&gt;027               &lt;br /&gt;028               &lt;br /&gt;029               &lt;br /&gt;030               &lt;br /&gt;031               &lt;br /&gt;032               &lt;br /&gt;033               &lt;br /&gt;034               &lt;br /&gt;035               &lt;br /&gt;036               &lt;br /&gt;037               &lt;br /&gt;038               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Get-EmptyFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;C:\&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[switch]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$nodisplay&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#006400;"&gt;## test folder path&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;!&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#00008b;"&gt;throw&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Invalid path&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;emptyfolders.txt&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Remove-Item&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;emptyfolders.txt&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fso&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;New-Object&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-com&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Scripting.FileSystemObject&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-EmptyFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fso&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;GetFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;!&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$nodisplay&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Content&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;emptyfolders.txt&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Test-EmptyFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folder&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$subfolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folder&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SubFolders&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;If&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$subfolder&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Size&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Out-File&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;emptyfolders.txt&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-inputobject&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$subfolder&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:#000080;"&gt;-append&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-EmptyFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$subfolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Remove-EmptyFolder&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;emptyfolders.txt&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[switch]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$remove&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folders&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Content&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folders&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Length&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-ge&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;--&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;!&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$remove&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Remove-Item&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folders&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-WhatIf&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Remove-Item&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$folders&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-verbose&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Get-EmptyFolder function accepts a folder path and uses the Scripting.FileSystem object for the folder. This is passed to Test-EmptyFolder which tests the subfolders for size and adds the paths of empty ones to the output file.&amp;#160; &lt;/p&gt;  &lt;p&gt;Test-EmptyFolder is then called recursively with each subfolder. Recursion is a very powerful technique for re-using the same function and looping through a nested structure.&lt;/p&gt;  &lt;p&gt;A switch parameter is used to determine if the contents of the file should be displayed at the end. Switch parameters can be used to provide true\false values. In this case we display unless told not to.&lt;/p&gt;  &lt;p&gt;The output file can then be processed by Remove-EmptyFolder. The file contents are read into an array which is then read bottom to top.&amp;#160; This enables me to delete subfolders before high level folders. Splitting the processing also allows me to review the file contents before folder removal.&amp;#160; As an additional check the –whatif parameter is used unless the -remove switch is used as a parameter.&lt;/p&gt;  &lt;p&gt;The module manifest only publishes get-emptyfolder and remove-emptyfolder keeping test-emptyfolder as a hidden helper function.&lt;/p&gt;  &lt;p&gt;I have a few more functions to add to this module then I’ll re-publish it on my sky drive.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:507c6faf-ae7e-4ac2-a981-a1beeeb8a7bd" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Files" rel="tag"&gt;Files&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Empty+Folders" rel="tag"&gt;Empty Folders&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737987" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>Creating Temporary files</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/05/creating-temporary-files.aspx</link><pubDate>Thu, 05 Nov 2009 13:13:45 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737779</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1737779</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/05/creating-temporary-files.aspx#comments</comments><description>&lt;p&gt;One thing I need to do when testing file system scripts is generate a bunch of temporary files for experimenting with.&amp;#160; In the past I have just copied in whatever I could find to use as test data.&amp;#160; It is possible to easily generate test data of this sort using the New-TempFile function below.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;012               &lt;br /&gt;013               &lt;br /&gt;014               &lt;br /&gt;015               &lt;br /&gt;016               &lt;br /&gt;017               &lt;br /&gt;018               &lt;br /&gt;019               &lt;br /&gt;020               &lt;br /&gt;021               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#006400;"&gt;## asssume that want temp files in multiples of 1KB or empty&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;New-TempFile&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;C:\Test&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[int]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$size&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1KB&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;!&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#00008b;"&gt;throw&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Invalid path&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[System.IO.Path]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;GetRandomFileName&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$size&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-eq&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;New-Item&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Name&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-ItemType&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;File&amp;#39;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;*&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;128&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$lines&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[System.Math]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;Ceiling&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$size&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1kb&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;*&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;8&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#00008b;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-le&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$lines&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Add-Content&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;$(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Join-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-ChildPath&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Value&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-ChildItem&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Filter&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The function takes two arguments – a path and a file size. My default values are given but they can be easily changed to suit you system.&lt;/p&gt;  &lt;p&gt;After checking that the path exists I generate a random file name using GetRandomFile().&amp;#160; We could use GetTempFileName() but that creates an empty file in the temporary folder which isn’t quite what I want.&lt;/p&gt;  &lt;p&gt;If the size is zero an empty file is created on the given path. Otherwise if size is supplied e.g.&lt;/p&gt;  &lt;p&gt;New-TempFile -size 5kb&lt;/p&gt;  &lt;p&gt;then a number of 128byte lines are written into the file.&amp;#160; If larger files are being routinely created increase the size of the string to 512 bytes – or put a test on say 100kb size and use the bigger string in that case.&lt;/p&gt;  &lt;p&gt;Add-Content is used to write the data into the file.&lt;/p&gt;  &lt;p&gt;One enhancement is to allow the setting of the file extension. &lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:91c10544-5366-4198-896a-6a9d51148dfd" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Files" rel="tag"&gt;Files&lt;/a&gt;,&lt;a href="http://technorati.com/tags/temporary" rel="tag"&gt;temporary&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737779" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>Cleaning Temp folder</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/04/cleaning-temp-folder.aspx</link><pubDate>Wed, 04 Nov 2009 13:39:06 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737614</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1737614</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/04/cleaning-temp-folder.aspx#comments</comments><description>&lt;p&gt;Windows uses a temporary folder as a scratch pad and dumping ground for all sorts of temporary files.&amp;#160; There are a couple of issues with the temporary folder. Firstly by default its part your profile and each user has their own. Secondly there isn’t any real clean up performed on it.&lt;/p&gt;  &lt;p&gt;The first issue can be dealt with by editing the contents of the TEMP and TMP environmental variables. I’ll show a script for this another time.&amp;#160; The second we can deal with quite easily with these functions.&lt;/p&gt;  &lt;p&gt;We can use Get-TempContents to determine the current contents of the temporary folder.&amp;#160; I’ve grouped by extension just to get a feel of the file distribution.&amp;#160; If you want to see the whole listing then leave the group command out.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Get-TempContents&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-ChildItem&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$env:temp&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;group&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;extension&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;PowerShell exposes a number data stores via providers. One of these is the environmental variables. These can be accessed using &lt;/p&gt;  &lt;p&gt;Get-ChildItem env:&lt;/p&gt;  &lt;p&gt;where env: is the PowerShell drive for the environmental variables. Using aliases this becomes&lt;/p&gt;  &lt;p&gt;ls env:&amp;#160;&amp;#160; or&amp;#160; dir env:&lt;/p&gt;  &lt;p&gt;Now we have an idea of what files we have we can remove them.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:933px;padding-right:5px;font-family:consolas,lucida console;height:143px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Remove-TempContents&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$extensions&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.tmp&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.log&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.sig&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.cvr&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.txt&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.xml&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.HxC&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.cfg&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.exe&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;.msi&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$td&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Date&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;AddDays&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#800080;"&gt;-7&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-ChildItem&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$env:temp&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;where&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$extensions&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-contains&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Extension&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-and&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;LastWriteTime&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-lt&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$td&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Remove-Item&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Verbose&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We can start by defining a list of file extensions that we want to delete. I have decided to only delete files older than 7 days so we generate a date for this time last week using the AddDays method of the DateTime object that Get-Date returns.&lt;/p&gt;  &lt;p&gt;We can then get the contents of the temporary folder. Check the extension and the LastWriteTime and remove those files that match the criteria.&lt;/p&gt;  &lt;p&gt;Next job is to schedule this job which is a topic for another day.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:de4b5cf7-71bc-4388-a390-cab606d5d049" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Files" rel="tag"&gt;Files&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Clean+temp+folder" rel="tag"&gt;Clean temp folder&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737614" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>No PowerShell = No Job?</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/03/no-powershell-no-job.aspx</link><pubDate>Tue, 03 Nov 2009 19:39:01 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737410</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1737410</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/11/03/no-powershell-no-job.aspx#comments</comments><description>&lt;p&gt;James has an excellent post - &lt;a title="http://blogs.technet.com/jamesone/archive/2009/11/02/you-can-t-be-a-21st-century-admin-without-powershell.aspx" href="http://blogs.technet.com/jamesone/archive/2009/11/02/you-can-t-be-a-21st-century-admin-without-powershell.aspx"&gt;http://blogs.technet.com/jamesone/archive/2009/11/02/you-can-t-be-a-21st-century-admin-without-powershell.aspx&lt;/a&gt; – explaining why PowerShell is going to be a must have skill for IT admins going forward.&lt;/p&gt;  &lt;p&gt;As far as I am concerned he is preaching to the choir :)&lt;/p&gt;  &lt;p&gt;But he has a very valid point. PowerShell is the Microsoft automation tool that will be built into all major products. Eventually we can expect administrative GUIs to be layered over PowerShell cmdlets and expose the commands they are running when we execute a command. This is the pattern established by the Exchange team.&lt;/p&gt;  &lt;p&gt;James follows with a list of Microsoft products that already contain PowerShell – BTW SQL Server 2008 uses PowerShell v1 already we don’t need to wait for SQL 2008 R2 for PowerShell support.&lt;/p&gt;  &lt;p&gt;What makes the PowerShell story even more compelling is the third party companies that are adopting PowerShell:-&lt;/p&gt;  &lt;p&gt;Quest, Special Operations Software, IBM, Symantec, F1, Citrix, VMware&lt;/p&gt;  &lt;p&gt;that I can think of immediately.&lt;/p&gt;  &lt;p&gt;This makes PowerShell a tool that will be everywhere in a Microsoft environment.&lt;/p&gt;  &lt;p&gt;The new features in PowerShell v2 – especially remoting and background jobs – make the case even more compelling for the admin of the future.&lt;/p&gt;  &lt;p&gt;Of course the question now is how can I learn PowerShell – plus I don’t have time to automate.&lt;/p&gt;  &lt;p&gt;Make the time the rewards are many.&lt;/p&gt;  &lt;p&gt;Will the title come true? Probably not but if you want to do more than spend your day clicking on the GUI – learn PowerShell.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6c129279-330e-4fdf-8288-408e32517a5e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737410" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>Hamming Distance</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/10/14/hamming-distance.aspx</link><pubDate>Wed, 14 Oct 2009 10:09:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1732299</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1732299</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/10/14/hamming-distance.aspx#comments</comments><description>&lt;p&gt;Catching up on my reading I came across this post - &lt;a title="http://blogs.msdn.com/powershell/archive/2009/09/20/what-s-up-with-command-prefixes.aspx" href="http://blogs.msdn.com/powershell/archive/2009/09/20/what-s-up-with-command-prefixes.aspx"&gt;http://blogs.msdn.com/powershell/archive/2009/09/20/what-s-up-with-command-prefixes.aspx&lt;/a&gt; which is a good explanation for why we should use command prefixes when creating cmdlets.&amp;#160; There is a reference to prefixes increasing the Hamming Distance of noun names.&lt;/p&gt;  &lt;p&gt;Not knowing what a Hamming Distance is I followed the link to &lt;a title="http://en.wikipedia.org/wiki/Hamming_distance" href="http://en.wikipedia.org/wiki/Hamming_distance"&gt;http://en.wikipedia.org/wiki/Hamming_distance&lt;/a&gt; and found that it is a measure of the difference between two strings i.e. how many substitutions are required to turn one string into another.&lt;/p&gt;  &lt;p&gt;We can find the Hamming Distance as follows&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:802px;padding-right:5px;font-family:consolas,lucida console;height:126px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str1&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;stone&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str2&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;roses&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$hd&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str1&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;length&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-ne&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str2&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;length&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#00008b;"&gt;Throw&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Strings are not the same length&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#00008b;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-le&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str1&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;length&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str1&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SubString&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-ne&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$str2&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SubString&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$i&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$hd&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Hamming Distance for $str1 and $str2 is $hd&amp;quot;&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Input a couple of strings, check they are the same length and then compare on a character by character basis.&lt;/p&gt;  &lt;p&gt;The script can be used like this&lt;/p&gt;  &lt;p&gt;PS&amp;gt; .\Get-HammingDistance.ps1 toned roses    &lt;br /&gt;Hamming Distance for toned and roses is 3     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; .\Get-HammingDistance.ps1 baston boston    &lt;br /&gt;Hamming Distance for baston and boston is 1     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;PS&amp;gt; .\Get-HammingDistance.ps1 2173896 2233796    &lt;br /&gt;Hamming Distance for 2173896 and 2233796 is 3&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fb76b08d-24eb-4f6d-91de-8e73f27d9552" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/strings" rel="tag"&gt;strings&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1732299" width="1" height="1"&gt;</description></item><item><title>Date and Time</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/10/12/date-and-time.aspx</link><pubDate>Mon, 12 Oct 2009 14:31:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1731970</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1731970</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/10/12/date-and-time.aspx#comments</comments><description>&lt;p&gt;I recently came across a script that used date and time information in this manner&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#ff4500;"&gt;$stuff&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Stuff&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$monthday&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Date&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Format&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;ddMMM&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$year&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Date&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Format&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;yyyy&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$time&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Date&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Format&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;HH:mm:ss&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;$monthday&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;$year&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;$time&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;$stuff&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This gives a result of&lt;/p&gt;  &lt;p&gt;12Oct,2009,15:20:32,Stuff&lt;/p&gt;  &lt;p&gt;I didn’t like the way get-date was used three times – its messy .&amp;#160; In most cases it won’t make much difference but if the script runs across a day boundary you just might get some odd results. &lt;/p&gt;  &lt;p&gt;The same results can be achieved with&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:819px;padding-right:5px;font-family:consolas,lucida console;height:109px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#ff4500;"&gt;$stuff&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Stuff&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Date&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;{0:dd}{1:MMM},{2:yyyy},{3:HH}:{4:mm}:{5:ss},$stuff&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-f&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$date&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$data&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;which will give a result of&lt;/p&gt;  &lt;p&gt;12Oct,2009,15:20:38,Stuff&lt;/p&gt;  &lt;p&gt;The time differences are related to me clicking across different tabs in ISE&lt;/p&gt;  &lt;p&gt;In this way we only call Get-date once and use the .NET string formatting to give the results we want.&amp;#160; Much neater and we don’t need to worry about time or date boundaries&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:621c4b4d-9179-4374-88dc-2f99f1b75618" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;,&lt;a href="http://technorati.com/tags/date" rel="tag"&gt;date&lt;/a&gt;,&lt;a href="http://technorati.com/tags/time" rel="tag"&gt;time&lt;/a&gt;,&lt;a href="http://technorati.com/tags/format" rel="tag"&gt;format&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1731970" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>Word module</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/07/word-module.aspx</link><pubDate>Mon, 07 Sep 2009 19:40:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1721445</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1721445</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/07/word-module.aspx#comments</comments><description>&lt;p&gt;I’ve posted a PowerShell module that includes the functions in earlier posts to my skydrive&amp;#160; -&amp;#160;&amp;#160; &lt;a title="http://cid-43cfa46a74cf3e96.skydrive.live.com/browse.aspx/PowerShell%20Scripts" href="http://cid-43cfa46a74cf3e96.skydrive.live.com/browse.aspx/PowerShell%20Scripts"&gt;http://cid-43cfa46a74cf3e96.skydrive.live.com/browse.aspx/PowerShell%20Scripts&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f4d88298-176d-4e8a-8a31-d1ba668ae813" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Word" rel="tag"&gt;Word&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Module" rel="tag"&gt;Module&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1721445" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Unblocking files</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/05/unblocking-files.aspx</link><pubDate>Sat, 05 Sep 2009 13:53:10 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720949</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1720949</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/05/unblocking-files.aspx#comments</comments><description>&lt;p&gt;When I download files from the Internet to Vista or Windows 7 the file is blocked and I can’t execute it until its unblocked. This is especially annoying with zip files because if I unzip them all the contents are blocked. I have been meaning to do something in PowerShell for this and finally got round to it.&amp;#160; The blocking is because of a zone identifier in an alternate data stream (ADS) attached to the file. If you have been around PowerShell for any length of time you may remember MoWs post on this subject - &lt;a title="http://thepowershellguy.com/blogs/posh/archive/2007/01/27/powershell-accessing-alternative-data-streams-of-files-on-an-ntfs-volume.aspx" href="http://thepowershellguy.com/blogs/posh/archive/2007/01/27/powershell-accessing-alternative-data-streams-of-files-on-an-ntfs-volume.aspx"&gt;http://thepowershellguy.com/blogs/posh/archive/2007/01/27/powershell-accessing-alternative-data-streams-of-files-on-an-ntfs-volume.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This was my starting point but when went to download the file containing the .NET classes we need to access the ADS from &lt;a title="http://www.codeproject.com/KB/cs/ntfsstreams.aspx" href="http://www.codeproject.com/KB/cs/ntfsstreams.aspx"&gt;http://www.codeproject.com/KB/cs/ntfsstreams.aspx&lt;/a&gt; I found that the classes had been updated. So first off download the .NET stuff and extract the dll containing the classes (after unblocking the zip file).&lt;/p&gt;  &lt;p&gt;I decided to add this functionality into my module for working with files.&lt;/p&gt;  &lt;p&gt;First point is that I need to load the .NET assemblies from the dll.&amp;#160; I can do this in the .psd1 file by adding this line&lt;/p&gt;  &lt;p&gt;RequiredAssemblies = &amp;#39;Trinet.Core.IO.Ntfs.dll&amp;#39;&lt;/p&gt;  &lt;p&gt;I then added two functions into the module. One to test if a zone identifier exists and another to delete it&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:825px;padding-right:5px;font-family:consolas,lucida console;height:536px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;012               &lt;br /&gt;013               &lt;br /&gt;014               &lt;br /&gt;015               &lt;br /&gt;016               &lt;br /&gt;017               &lt;br /&gt;018               &lt;br /&gt;019               &lt;br /&gt;020               &lt;br /&gt;021               &lt;br /&gt;022               &lt;br /&gt;023               &lt;br /&gt;024               &lt;br /&gt;025               &lt;br /&gt;026               &lt;br /&gt;027               &lt;br /&gt;028               &lt;br /&gt;029               &lt;br /&gt;030               &lt;br /&gt;031               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Test-ZoneIdentifier&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;Parameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ValueFromPipeline&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008080;"&gt;[Trinet.Core.IO.Ntfs.FileSystem]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;AlternateDataStreamExists&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Zone.Identifier&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fs&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[Trinet.Core.IO.Ntfs.FileSystem]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;GetAlternateDataStream&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Zone.Identifier&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ads&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;OpenText&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;ReadToEnd&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$type&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ads&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SubString&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$ads&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;IndexOf&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;ZoneId=&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;7&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;-as&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[ZoneIdentifier]&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Zone.Identifier present. Type $type If of Type Internet the file will be blocked.&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#008080;"&gt;[Trinet.Core.IO.Ntfs.FileSystem]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;ListAlternateDataStreams&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:#006400;"&gt;## test if other ADS &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;File Not found&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Remove-ZoneIdentifier&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;Parameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ValueFromPipeline&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Test-Path&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008080;"&gt;[Trinet.Core.IO.Ntfs.FileSystem]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;AlternateDataStreamExists&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Zone.Identifier&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fs&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#008080;"&gt;[Trinet.Core.IO.Ntfs.FileSystem]&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;::&lt;/span&gt;&lt;span style="color:#000000;"&gt;GetAlternateDataStream&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;#39;Zone.Identifier&amp;#39;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$fs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Delete&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Write-Host&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;File Not found&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Test-ZoneIdentifier function will accept a file from the pipeline and test the path to the file.&amp;#160; If the file exists the function will then test to see if a Zone.Identifer ADS exists. If it does it will read the ADS and work out the zone using the ZoneIdentifier enum which we create in the module as well.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:818px;padding-right:5px;font-family:consolas,lucida console;height:192px;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#ff4500;"&gt;$values&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;NoZone = -1&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;MyComputer = 0&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Intranet = 1&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Trusted = 2&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Internet = 3&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Untrusted = 4&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#ff4500;"&gt;$code&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;@&amp;quot;                &lt;br /&gt;&amp;#160; public enum ZoneIdentifier : int                 &lt;br /&gt;&amp;#160; {                 &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $($values -join &amp;quot;,`n&amp;quot;)                 &lt;br /&gt;&amp;#160; }                 &lt;br /&gt;&amp;quot;@&lt;/span&gt;               &lt;br /&gt;              &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Add-Type&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$code&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is adapted from MoWs code at &lt;a title="http://thepowershellguy.com/blogs/posh/archive/2008/06/02/powershell-v2-ctp2-making-custom-enums-using-add-type.aspx" href="http://thepowershellguy.com/blogs/posh/archive/2008/06/02/powershell-v2-ctp2-making-custom-enums-using-add-type.aspx"&gt;http://thepowershellguy.com/blogs/posh/archive/2008/06/02/powershell-v2-ctp2-making-custom-enums-using-add-type.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A hash table could also be used at this point if preferred.&lt;/p&gt;  &lt;p&gt;The function Remove-ZoneIdentifier will delete the ADS and unblock the file.&amp;#160; By enabling these functions to work on the pipeline we can process a number of files in one hit.&lt;/p&gt;  &lt;p&gt;The functions are used as follows&lt;/p&gt;  &lt;p&gt;PS&amp;gt; Import-Module filefunctions    &lt;br /&gt;PS&amp;gt; Get-ChildItem -Path c:\test\NtfsStreams.zip | Test-ZoneIdentifier     &lt;br /&gt;Zone.Identifier present. Type Internet&amp;#160; If of Type Internet the file will be blocked.     &lt;br /&gt;PS&amp;gt; Get-ChildItem -Path c:\test\NtfsStreams.zip | Remove-ZoneIdentifier     &lt;br /&gt;True     &lt;br /&gt;PS&amp;gt; Get-ChildItem -Path c:\test\NtfsStreams.zip | Test-ZoneIdentifier&lt;/p&gt; I’ve uploaded the module files to my skydrive at &lt;a title="http://cid-43cfa46a74cf3e96.skydrive.live.com/self.aspx/PowerShell%20Scripts/FileFunctions.zip" href="http://cid-43cfa46a74cf3e96.skydrive.live.com/self.aspx/PowerShell%20Scripts/FileFunctions.zip"&gt;http://cid-43cfa46a74cf3e96.skydrive.live.com/self.aspx/PowerShell%20Scripts/FileFunctions.zip&lt;/a&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The ntfs streams dll you will need to download separately.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9f2217c5-2eb3-4886-9bf6-282d75f23945" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Modules" rel="tag"&gt;Modules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Alternate+data+streams" rel="tag"&gt;Alternate data streams&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720949" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Modules/default.aspx">Modules</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Hidden+Files/default.aspx">Hidden Files</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/File+Attributes/default.aspx">File Attributes</category></item><item><title>Codeplex AD Replication Module</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/04/codeplex-ad-replication-module.aspx</link><pubDate>Fri, 04 Sep 2009 08:25:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720658</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1720658</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/04/codeplex-ad-replication-module.aspx#comments</comments><description>&lt;p&gt;The other codeplex project that caught my eye was a brand new one to create a PowerShell module to manage AD replication.&amp;#160; This one will be very useful and one I will be using a lot.&lt;/p&gt;  &lt;p&gt;There is still time for suggestions as to content for this project – see &lt;a title="http://adreplicationmodule.codeplex.com/" href="http://adreplicationmodule.codeplex.com/"&gt;http://adreplicationmodule.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:35256b7f-3c74-4ba3-923c-481e9979fa14" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Active+Directory" rel="tag"&gt;Active Directory&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Replication" rel="tag"&gt;Replication&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720658" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+and+Active+Directory/default.aspx">PowerShell and Active Directory</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Active+Directory/default.aspx">Active Directory</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Modules/default.aspx">Modules</category></item><item><title>Codeplex PowerShell Configurator</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/04/codeplex-powershell-configurator.aspx</link><pubDate>Fri, 04 Sep 2009 08:18:28 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720657</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1720657</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/04/codeplex-powershell-configurator.aspx#comments</comments><description>&lt;p&gt;I was looking at codeplex (Microsoft’s Open Source site) and decided to do a search for projects relating to PowerShell. &lt;strong&gt;161 projects&lt;/strong&gt; were returned.&amp;#160; The first 110 had an obvious PowerShell connection.&amp;#160; This is a tremendous number and really does demonstrate the strength of the PowerShell community.&lt;/p&gt;  &lt;p&gt;One project that caught my eye was James O’Neill’s PowerShell configurator for Server 2008 R2 Core and Hyper Server R2.&amp;#160; Its done as a PowerShell v2 module with the following functions&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Managing installed software , drivers and updates&lt;/strong&gt;&lt;/h4&gt; Add-Driver, Get-Driver   &lt;br /&gt;Add-HotFix ,   &lt;br /&gt;Add-InstalledProduct ,Get-InstalledProduct , , Remove-InstalledProduct,   &lt;br /&gt;Add-WindowsFeature , Get-WindowsFeature, Remove-WindowsFeature   &lt;br /&gt;Add-WindowsUpdate, Get-WindowsUpdateConfig , Set-WindowsUpdateConfig   &lt;h4&gt;&lt;strong&gt;Managing the windows Firewall &lt;/strong&gt;&lt;/h4&gt; Get-FirewallConfig , Set-FirewallConfig, Get-FirewallProfile , Get-FireWallRule   &lt;h4&gt;&lt;strong&gt;IP Networking&lt;/strong&gt;&lt;/h4&gt; Get-NetworkAdapter, Get-IpConfig , New-IpConfig , Remove-IpConfig, Set-IpConfig   &lt;h4&gt;&lt;strong&gt;Licensing&lt;/strong&gt;&lt;/h4&gt; Get-Registration , Register-Computer   &lt;h4&gt;&lt;strong&gt;Page file&lt;/strong&gt;&lt;/h4&gt; Get-ShutDownTracker , Set-ShutDownTracker   &lt;h4&gt;&lt;strong&gt;Remote Desktop&lt;/strong&gt;&lt;/h4&gt; Get-RemoteDesktopConfig , Set-RemoteDesktop   &lt;h4&gt;&lt;strong&gt;Other Windows Configuration&lt;/strong&gt;&lt;/h4&gt; Get-WinRMConfig   &lt;br /&gt;Rename-Computer   &lt;br /&gt;Set-iSCSIConfig   &lt;br /&gt;Set-RegionalConfig   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There shouldn’t be any reason why it won’t work on full fat Windows so I’ll definitely be trying it out.&amp;#160; Download from &lt;a title="http://psconfig.codeplex.com/" href="http://psconfig.codeplex.com/"&gt;http://psconfig.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c7f37439-15ca-46ad-881e-295a7b1b7d39" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Powershell+v2" rel="tag"&gt;Powershell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CodePlex" rel="tag"&gt;CodePlex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PowerShell+Configurator" rel="tag"&gt;PowerShell Configurator&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720657" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Word Add text</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/03/word-add-text.aspx</link><pubDate>Thu, 03 Sep 2009 17:20:53 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720525</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1720525</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/03/word-add-text.aspx#comments</comments><description>&lt;p&gt;Keeping on with our look at Word we need to able to add text to the documents we are creating.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;010               &lt;br /&gt;011               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Add-Text&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$style&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$text&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$global:paragraph&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$doc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Content&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Paragraphs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Add&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$range&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$paragraph&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;&amp;#160;&amp;#160;&amp;#160; $Paragraph&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Text&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Text&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;&amp;#160;&amp;#160;&amp;#160; $Paragraph&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Style&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$Style&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;&amp;#160;&amp;#160;&amp;#160; $Paragraph&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;InsertParagraphAfter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Add a paragraph then set the style and the paragraph text.&amp;#160; The text could come from a file using get-content. InsertParagraph() pushes the paragraph into the document.&lt;/p&gt;  &lt;p&gt;Instead of setting the style we could explicitly set the font and its size. &lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b3cf69d0-8c0b-4631-910b-3a3deb00107e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Word" rel="tag"&gt;Word&lt;/a&gt;,&lt;a href="http://technorati.com/tags/text" rel="tag"&gt;text&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720525" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Word add data to a table</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/02/word-add-data-to-a-table.aspx</link><pubDate>Wed, 02 Sep 2009 16:25:37 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720229</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1720229</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/02/word-add-data-to-a-table.aspx#comments</comments><description>&lt;p&gt;We created a table in a recent post.&amp;#160; This time round we add some data to the table.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Add-TableData&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[int]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$row&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[int]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$col&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;1&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$text&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$table&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Cell&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$row&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$col&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Text&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$text&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;              &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The row and column together with the text to enter into the cell are passed as parameters.&amp;#160; &lt;/p&gt;  &lt;p&gt;$table.Cell($row, $col).Range.Style = “&lt;em&gt;style_name&lt;/em&gt;” can be used to set the style of the table cell contents.&amp;#160; We can even set the style at the table level if required.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:76509877-b9a8-4517-97dd-c3251c78b5f2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Powershell+v2" rel="tag"&gt;Powershell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Word" rel="tag"&gt;Word&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Modules" rel="tag"&gt;Modules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Table" rel="tag"&gt;Table&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720229" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Module Contents</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/01/module-contents.aspx</link><pubDate>Tue, 01 Sep 2009 18:36:13 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719934</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1719934</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/01/module-contents.aspx#comments</comments><description>&lt;p&gt;I’ve been writing a few modules recently and sometimes forget what I have in each module. Simple way to view the functions each module makes available.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#0000ff;"&gt;Clear-Host&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#0000ff;"&gt;Get-Module&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-ListAvailable&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Import-Module&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Name&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Get-Command&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000080;"&gt;-Module&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Name&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;|&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Select&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Module&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Name&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;Remove-Module&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$_&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Name&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#8b0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;List the available modules and for each one import the module and then use Get-Command to find the functions each one loads. We can then remove the module.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6ca379a1-e874-44a2-aad1-4c0dbccbff41" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Modules" rel="tag"&gt;Modules&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719934" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Word Close Document</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/01/word-close-document.aspx</link><pubDate>Tue, 01 Sep 2009 18:33:04 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719933</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1719933</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/09/01/word-close-document.aspx#comments</comments><description>&lt;p&gt;So far we have created a document and started to add data into the document.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Close-WordDocument&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;[&lt;/span&gt;&lt;span style="color:#add8e6;"&gt;parameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;Mandatory&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;]&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[string]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$doc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;SaveAs&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008080;"&gt;[REF]&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$file&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$word&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Quit&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We pass a file name in as a parameter. Notice that the parameter is mandatory. If we don’t supply the file name we will be prompted. If just a file name is given it will be saved into your standard word location (usually My Documents). If you want it to save somewhere else then use the full path.&lt;/p&gt;  &lt;p&gt;The SaveAs() method is used for the save.&amp;#160; If you give the name of a file that exists it will overwrite!&lt;/p&gt;  &lt;p&gt;The final line of the script closes the Word application.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a986890d-7b6d-443e-b280-8e1007be1d0b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Word" rel="tag"&gt;Word&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719933" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>PowerShell v2 help file</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/31/powershell-v2-help-file.aspx</link><pubDate>Mon, 31 Aug 2009 19:45:12 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719729</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1719729</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/31/powershell-v2-help-file.aspx#comments</comments><description>&lt;p&gt;In PowerShell v2 we get a nice graphical help system that includes the cmdlets, the about files and and the User and Getting Started Guide. It doesn’t include the help for the optional modules though which is a pity.&lt;/p&gt;  &lt;p&gt;The default locations on the Start Menu for PowerShell are Accessories – Windows PowerShell.&amp;#160; That is not very good placement considering Windows only really exists to give us somewhere to run Powershell :-)&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;In these locations the help files are not visible. If you open up ISE then you can access the help file.&lt;/p&gt;  &lt;p&gt;If you pin PowerShell to the start menu on Windows 7 then you get access to the help through the recent files menu.&amp;#160; The help file is located (on my system) at C:\Windows\Help\mui\0409\WindowsPowerShellHelp.chm&lt;/p&gt;  &lt;p&gt;I keep a shortcut on my desktop and a shortcut to the version 1 graphical help file from the script center.&amp;#160; that way I can compare changes.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:58610b27-578f-431a-b77f-23774bfd63af" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell+v2" rel="tag"&gt;PowerShell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Help" rel="tag"&gt;Help&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719729" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item><item><title>Word Add a table</title><link>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/31/word-add-a-table.aspx</link><pubDate>Mon, 31 Aug 2009 12:22:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719689</guid><dc:creator>RichardSiddaway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/richardsiddaway/rsscomments.aspx?PostID=1719689</wfw:commentRss><comments>http://msmvps.com/blogs/richardsiddaway/archive/2009/08/31/word-add-a-table.aspx#comments</comments><description>&lt;p&gt;There seems to be two types of paragraph I create in Word documents – text or tables.&amp;#160; Lets start by adding a table.&lt;/p&gt;  &lt;div style="border-bottom:black 1px solid;border-left:black 1px solid;padding-bottom:5px;padding-left:5px;width:750px;padding-right:5px;font-family:consolas,lucida console;font-size:10pt;overflow:auto;border-top:black 1px solid;border-right:black 1px solid;padding-top:5px;"&gt;   &lt;table border="0" cellspacing="0" cellpadding="5"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#cecece;font-size:10pt;padding-top:5px;"&gt;001              &lt;br /&gt;002               &lt;br /&gt;003               &lt;br /&gt;004               &lt;br /&gt;005               &lt;br /&gt;006               &lt;br /&gt;007               &lt;br /&gt;008               &lt;br /&gt;009               &lt;br /&gt;&lt;/div&gt;         &lt;/td&gt;          &lt;td valign="top" nowrap="nowrap"&gt;           &lt;div style="padding-bottom:5px;padding-left:5px;padding-right:5px;font-family:consolas,lucida console;background:#fcfcfc;font-size:10pt;padding-top:5px;"&gt;&lt;span style="color:#00008b;"&gt;function&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#8a2be2;"&gt;Add-Table&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#00008b;"&gt;param&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[int]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$row&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;2&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#008080;"&gt;[int]&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$col&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#800080;"&gt;5&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$global:paragraph&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$doc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Content&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Paragraphs&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Add&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$range&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$paragraph&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Range&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$global:table&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$doc&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Tables&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Add&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$range&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$row&lt;/span&gt;&lt;span style="color:#a9a9a9;"&gt;,&lt;/span&gt;&lt;span style="color:#ff4500;"&gt;$col&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;               &lt;br /&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt; &lt;/div&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The function Add-Table takes two integers as parameters. They define the rows and columns of the table.&amp;#160; The way that seems to work best is to add a paragraph to contain the table and then add the table into the paragraph.&amp;#160; If we just add the table to the document it overwrites the contents of the document with the table. oops.&lt;/p&gt;  &lt;p&gt;Notice that I’m using global variables again so that they can be used across the environment.&lt;/p&gt;  &lt;p&gt;Next time we will add some data to the table.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a4fb0b87-5ede-4813-a812-2a426107a103" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Powershell+v2" rel="tag"&gt;Powershell v2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/modules" rel="tag"&gt;modules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Word" rel="tag"&gt;Word&lt;/a&gt;,&lt;a href="http://technorati.com/tags/table" rel="tag"&gt;table&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719689" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/richardsiddaway/archive/tags/PowerShell+V2/default.aspx">PowerShell V2</category></item></channel></rss>