<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1891832002873524183</atom:id><lastBuildDate>Sat, 20 Apr 2013 08:39:24 +0000</lastBuildDate><category>Xbox360</category><category>Productivity</category><category>My Blog</category><category>PowerShell</category><category>SCCM</category><category>Subversion</category><category>Live Mesh</category><category>Live</category><category>Recommendations</category><category>Terminal Services</category><category>Windows Virtual PC</category><category>Complains</category><category>Windows</category><category>Fun</category><category>Citrix</category><category>Problem</category><category>Presentations</category><category>Tricks</category><category>Blog</category><category>Interesting facts</category><category>Cloud</category><category>Windows 7</category><category>Utilities</category><title>Martin Zugec blog</title><description>Blog about technologies I work with every day and I love - scripting, SBC, small utilities, tips and tricks...</description><link>http://martinzugec.blogspot.com/</link><managingEditor>noreply@blogger.com (Martin Zugec)</managingEditor><generator>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MartinZugecBlog" /><feedburner:info uri="martinzugecblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-5488667855583896505</guid><pubDate>Thu, 26 Nov 2009 08:52:00 +0000</pubDate><atom:updated>2009-11-26T09:52:29.781+01:00</atom:updated><title>Changing blog again :(</title><description>&lt;p&gt;After some time spend at this blog, I decided to move again. I started project OUT-WEB.NET with my colleagues Dennis Damen and Frank-Peter Schultze.&lt;/p&gt;  &lt;p&gt;You can follow my posts at &lt;a href="http://www.out-web.net"&gt;http://www.out-web.net&lt;/a&gt; – and thanks for support :)&lt;/p&gt;  &lt;p&gt;Martin&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=YI3GXQ5q7KU:ytNtt0KMHHw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=YI3GXQ5q7KU:ytNtt0KMHHw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/YI3GXQ5q7KU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/YI3GXQ5q7KU/changing-blog-again.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>5</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/11/changing-blog-again.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-3039853678493100156</guid><pubDate>Sat, 14 Nov 2009 09:33:00 +0000</pubDate><atom:updated>2009-11-14T10:33:17.769+01:00</atom:updated><title>Microsoft Office 2010 – designed for App-V?</title><description>&lt;p&gt;FINALLY Microsoft adopts application virtualization :)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Click-to-Run is a new software delivery mechanism built by the Office product team. It’s based on core virtualization and streaming technologies from the &lt;a href="http://www.microsoft.com/systemcenter/appv/default.mspx"&gt;Microsoft App-V team&lt;/a&gt; in Cambridge, MA.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/office2010/archive/2009/11/06/click-to-run-delivering-office-in-the-21st-century.aspx" href="http://blogs.technet.com/office2010/archive/2009/11/06/click-to-run-delivering-office-in-the-21st-century.aspx"&gt;http://blogs.technet.com/office2010/archive/2009/11/06/click-to-run-delivering-office-in-the-21st-century.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5LXZ4cIWDjQ:tni_D-n_PjQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5LXZ4cIWDjQ:tni_D-n_PjQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/5LXZ4cIWDjQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/5LXZ4cIWDjQ/microsoft-office-2010-designed-for-app.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/11/microsoft-office-2010-designed-for-app.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-5145833587550277874</guid><pubDate>Sun, 08 Nov 2009 13:47:00 +0000</pubDate><atom:updated>2009-11-08T14:47:30.369+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><category domain="http://www.blogger.com/atom/ns#">SCCM</category><title>How to get SCCM site code using Powershell</title><description>&lt;p&gt;I spent quite some time scripting SCCM using Powershell – I plan to write some blog post about what I have done, because it is probably most complex scripted solution I ever wrote, but for now, I would like to share one trick with you.&lt;/p&gt;  &lt;p&gt;When you script SCCM, you do it through WMI classes. SCCM classes are however not stored in default namespace – therefore whenever you want to access SCCM, you need code that looks similar to below:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Get-WmiObject –ComputerName “ServerX” –NameSpace “Root\SMS\Site_&amp;lt;YouSite&amp;gt; –Class …&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Which means that for every script you should accept at least arguments –ComputerName and –SiteCode, which can be pretty annoying to type over and over again. Therefore I use following trick to get sitecode automatically:&lt;/p&gt;  &lt;p&gt;# Specify one of SCCM servers and Site code is returned automatically   &lt;br /&gt;Function Global:SCCM\Get-Site([string]$ComputerName = $(Throw &amp;quot;Required parameter -ComputerName was not specified in SCCM\Get-Site function&amp;quot;)) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; get-WMIObject -ComputerName $ComputerName -Namespace &amp;quot;root\SMS&amp;quot; -Class &amp;quot;SMS_ProviderLocation&amp;quot; | foreach-object{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($_.ProviderForLocalSite -eq $true){$SiteCode=$_.sitecode}    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if ($SiteCode -eq &amp;quot;&amp;quot;) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; throw (&amp;quot;Sitecode of ConfigMgr Site at &amp;quot; + $ComputerName + &amp;quot; could not be determined.&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } else {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return $SiteCode     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=T88EWxtaBlE:PJy5b_UxNM0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=T88EWxtaBlE:PJy5b_UxNM0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/T88EWxtaBlE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/T88EWxtaBlE/how-to-get-sccm-site-code-using.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>2</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/11/how-to-get-sccm-site-code-using.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-8876672153218526735</guid><pubDate>Thu, 05 Nov 2009 18:55:00 +0000</pubDate><atom:updated>2009-11-05T19:55:53.607+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Windows</category><category domain="http://www.blogger.com/atom/ns#">Complains</category><title>Problem with path longer than 260 characters</title><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thomas Lee wrote about some issues they are experiencing with Get-ChildItem in &lt;a href="http://blogs.msdn.com/powershell/archive/2009/11/04/why-is-get-childitem-so-slow.aspx"&gt;this&lt;/a&gt; excellent blog post – to make long story short, Powershell is limited by underlying .NET architecture. Thomas mentions mostly performance issues – however I don’t really care about performance as long as it is stable and reliable.&lt;/p&gt;  &lt;p&gt;My biggest problem is with path limitation – event though NTFS itself supports paths up to 32.000 characters. &lt;/p&gt;  &lt;p&gt;This is error message you get from Explorer when you try to specify longer path:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_l0BX6co7dqI/SvMfsUyXLwI/AAAAAAAACJI/Pl-LtkiQayw/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_l0BX6co7dqI/SvMft1SZAjI/AAAAAAAACJM/UAYDKyxLvPg/image_thumb.png?imgmax=800" width="244" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Very nice blog article about this problem can be found at &lt;a href="http://www.codinghorror.com/blog/archives/000729.html"&gt;Coding Horror&lt;/a&gt;. &lt;a href="http://eamon.nerbonne.org/2006/11/why-maximum-path-lengths-are-bad-idea.html"&gt;Eamon Nerbonne&lt;/a&gt; had some nice comments about this problem also.&lt;/p&gt;  &lt;p&gt;Why is it so irritating? Almost everyone I mentioned this problem I received answer like “If you run into this problem, it’s your fault, because your are using too long folder\file names”. Shouldn’t 260 characters be enough for everyone?&lt;/p&gt;  &lt;p&gt;I don’t think so. First, I don’t see any reason why people shouldn’t use deep structures if they prefer it. I don’t – but that doesn’t mean that everyone had to use same style of work as I do. &lt;/p&gt;  &lt;p&gt;That applies to others, but doesn’t describe where is my problem with such limitation. I am mostly focused on enterprise customers – when you implement enterprise solutions, you cannot simply build something, but you must follow some guidelines, like naming conventions. Naming conventions usually apply to all departments – and more people or departments are involved, more complicated they get. If you store your files at network share, their name is also included in that limitation. Let’s consider that our fictional company called “Microsoft” will have development trusted domain. In that case, you can access it using following syntax:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;\\CZPRGHOS1DV15.development.microsoft.com\CTX_D_Sources$&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;On this network share, we store our installation sources. First of course we categorize them, because we got hundreds of applications:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;\Office&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Ok, so we got installation sources from Office 2007 – because there are multiple editions, we will use iso name as folder name:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;\EN_Office_Ultimate_2007_DVD_X12-22244&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;And that’s it. So our final path is &lt;/p&gt;  &lt;p&gt;&lt;em&gt;\\CZPRGHOS1DV15.development.microsoft.com\CTX_D_Sources$\Office\EN_Office_Ultimate_2007_DVD_X12-22244&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If we could it together, we are at 101 characters already. Add longest file (\Proofing.en-us\Proof.en\Proof.cab) and we are at 135 characters.&lt;/p&gt;  &lt;p&gt;Ok, that’s not that bad, isn’t it? Well, it is. With very basic categorization (no platform, no departments, no versioning etc…), we already reached 50% of the filesystem limit. And don’t forget that Office is VERY flat installation package compared to others (like XenApp for example). &lt;/p&gt;  &lt;p&gt;If we have a look at another example, we can use Application Compatibility Toolkit. Longest file name is 174 characters – already after 50%:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;c:\Program Files (x86)\Microsoft Application Compatibility Toolkit 5\Internet Explorer Compatibility Test Tool\Agent Framework\Agents\Bucketizer\BktOutputReverseTransform.xsl&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If we would like to copy it to our sources (&lt;em&gt;\\CZPRGHOS1DV15.development.microsoft.com\CTX_D_Sources$\Admin\Microsoft Application Compatibility Toolkit 5\Internet Explorer Compatibility Test Tool\Agent Framework\Agents\Bucketizer\BktOutputReverseTransform.xsl&lt;/em&gt;), we are already at 214 characters (so almost over the limit). &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=4eKnHnj33Fc:bm9AczOMI0w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=4eKnHnj33Fc:bm9AczOMI0w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/4eKnHnj33Fc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/4eKnHnj33Fc/problem-with-path-longer-than-260.html</link><author>noreply@blogger.com (Martin Zugec)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_l0BX6co7dqI/SvMft1SZAjI/AAAAAAAACJM/UAYDKyxLvPg/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/11/problem-with-path-longer-than-260.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-3617749578092942618</guid><pubDate>Thu, 29 Oct 2009 19:14:00 +0000</pubDate><atom:updated>2009-10-29T20:15:00.368+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Problem</category><category domain="http://www.blogger.com/atom/ns#">Citrix</category><category domain="http://www.blogger.com/atom/ns#">Windows</category><category domain="http://www.blogger.com/atom/ns#">Tricks</category><title>Fix Citrix\XenApp WMI issues</title><description>&lt;p&gt;Today I run into problem with WMI registrations on few servers. Even though namespace root\Citrix was available, there were no classes.&lt;/p&gt;  &lt;p&gt;Below is simple batch script that should be able to solve most WMI-related issues:&lt;/p&gt;  &lt;p&gt;:: Remove Repository    &lt;br /&gt;Net Stop winmgmt     &lt;br /&gt;RmDir /s /q &amp;quot;%WinDir%\System32\WBEM\Repository&amp;quot;     &lt;br /&gt;Net Start winmgmt &lt;/p&gt;  &lt;p&gt;:: Register core libraries    &lt;br /&gt;Regsvr32 /n /I /s &amp;quot;%WinDir%\system32\userenv.dll&amp;quot;     &lt;br /&gt;regsvr32 /n /I /s &amp;quot;%WinDir%\system32\scecli.dll&amp;quot; &lt;/p&gt;  &lt;p&gt;:: Compile Windows WMI    &lt;br /&gt;If Exist &amp;quot;%WinDir%\System32\WBEM&amp;quot; (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%WinDir%\System32\WBEM\*.dll&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG RegSvr32.exe /s &amp;quot;%WinDir%\System32\Wbem\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%WinDir%\System32\WBEM\*.mof&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG MofComp.exe &amp;quot;%WinDir%\System32\Wbem\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%WinDir%\System32\WBEM\*.mfl&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG MofComp.exe &amp;quot;%WinDir%\System32\Wbem\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;) &lt;/p&gt;  &lt;p&gt;:: Compile Citrix WMI    &lt;br /&gt;If Exist &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI&amp;quot; (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\*.dll&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG RegSvr32.exe /s &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\*.mof&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG MofComp.exe &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For /f &amp;quot;usebackq tokens=*&amp;quot; %%X IN (`Dir /b &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\*.fom&amp;quot;`) Do (     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call %S4_Lib%\SCRIPT_RUNLOG MofComp.exe &amp;quot;%ProgramFiles%\Citrix\System32\Citrix\WMI\%%X&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )     &lt;br /&gt;)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5qmvQ0V6ZF8:YrvUGQr5Ukc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5qmvQ0V6ZF8:YrvUGQr5Ukc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/5qmvQ0V6ZF8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/5qmvQ0V6ZF8/fix-citrixxenapp-wmi-issues.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/10/fix-citrixxenapp-wmi-issues.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-239584648398891494</guid><pubDate>Wed, 21 Oct 2009 19:29:00 +0000</pubDate><atom:updated>2009-10-21T21:29:03.970+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Powershell and argument issue</title><description>&lt;p&gt;I was creating very simple function today, however got stuck there for a while… &lt;/p&gt;  &lt;p&gt;As you can see below, function is very, very simple:   &lt;br /&gt;&lt;em&gt;Function Global:Security\Encrypt-String ([string]$Input){Return [LoginConsultants.Crypto.Password]::EnCrypt($Input)}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s using our library to encrypt some text… To my surprise, it didn’t work however. After a little investigation, it turned out that I made rookie mistake – I used $Input, while it is reserved variable :) Very, very stupid mistake of course, I was just surprised that Posh doesn’t complain if you use such parameter.&lt;/p&gt;  &lt;p&gt;Anyway, below is small function you can use to test if parameter you want to use is valid:   &lt;br /&gt;&lt;em&gt;function Test-ParameterName ([string]$Name) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return [boolean]$($(Test-Path Variable:$Name) -eq 0)      &lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;As you can see, it’s extremely primitive, only interesting part is &lt;em&gt;Return [boolean]$($(Test-Path Variable:$Name) -eq 0) – &lt;/em&gt;meaning of this function is to revert boolean value. So if Test-Path is $True, function will return $False and if Test-Path is $False, it will return $True. I remember that some years ago I used &lt;em&gt;[boolean]$Foo – 1&lt;/em&gt; in .NET, however it is not supported in Powershell itself (operator – is not defined for [boolean] and [int]).&lt;/p&gt;  &lt;p&gt;Martin&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=kYYfX4qpR9A:2QN8iXHOYPg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=kYYfX4qpR9A:2QN8iXHOYPg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/kYYfX4qpR9A" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/kYYfX4qpR9A/powershell-and-argument-issue.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/10/powershell-and-argument-issue.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-8654088850697595032</guid><pubDate>Tue, 20 Oct 2009 17:10:00 +0000</pubDate><atom:updated>2009-10-20T19:10:53.925+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Windows 7</category><title>Windows 7 madness</title><description>&lt;p&gt;I think that every geek is googling for phrases like “Windows 7 tips and tricks” or “Windows 7 secrets” once he thinks he knows enough about new product. &lt;/p&gt;  &lt;p&gt;Windows 7 is new IT phenomenon – you can discuss it, disagree with it, hate it, but that’s about it. Let’s have a look at &lt;a href="http://www.google.com/trends?q=windows+7%2C+snow+leopard&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=ytd&amp;amp;sort=1"&gt;Google Trends&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_l0BX6co7dqI/St3vETsgYzI/AAAAAAAACI4/xozu_HHxy04/s1600-h/Win7%20vs%20Leopard%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Win7 vs Leopard" border="0" alt="Win7 vs Leopard" src="http://lh5.ggpht.com/_l0BX6co7dqI/St3vFbHqIeI/AAAAAAAACI8/GbrzNMcHT0g/Win7%20vs%20Leopard_thumb%5B4%5D.png?imgmax=800" width="662" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Blue&lt;/font&gt; represents Windows 7, &lt;font color="#ff0000"&gt;red&lt;/font&gt; is main competitor Snow Leopard &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Just for fun, below is similar graph comparing Windows 7, Windows XP and Windows Vista.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_l0BX6co7dqI/St3vGA_C2ZI/AAAAAAAACJA/w64B1a9p9HI/s1600-h/Windows%20family%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Windows family" border="0" alt="Windows family" src="http://lh3.ggpht.com/_l0BX6co7dqI/St3vHH5BCrI/AAAAAAAACJE/CzwTcTUreEo/Windows%20family_thumb%5B1%5D.png?imgmax=800" width="658" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;Windows 7 &lt;/font&gt;vs &lt;font color="#ff0000"&gt;Windows XP &lt;/font&gt;vs &lt;font color="#ff8000"&gt;Windows Vista&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;First, let me give you my presentation from 1.10.2009 about Windows 7. &lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedicon.aspx/Presentations/Windows7.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;Second, I was reading through a lot of tips and tricks pages. Today I noticed article called &lt;a href="http://technet.microsoft.com/en-us/magazine/2009.10.77windows.aspx?sid=5cbb6c33dee24e04beee633c420481a2"&gt;77 Windows 7 Tips&lt;/a&gt;. To make long story short, it’s obvious that number 77 was chose first and then they started to think about the content :( Otherwise I don’t see any explanation for some of those tips. &lt;/p&gt;  &lt;p&gt;On the other hand, there are other articles that are discussing new features and tips\tricks and are great. To mention just a few of them, &lt;a href="http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx"&gt;Tim Sneath&lt;/a&gt; got great article and I also liked a lot &lt;a href="http://www.techradar.com/news/software/operating-systems/50-windows-7-tips-tricks-and-secrets-528483?artc_pg=1"&gt;article&lt;/a&gt; from TechRadar.&lt;/p&gt;  &lt;p&gt;So, I decided to write a series of articles about Windows 7. Currently I got 91 tips, but I started yesterday, so it shouldn’t be problem to get to 100. Some of the tricks are really simple and can be explained on 2-3 lines, some will require a lot more space. I don’t want to simply publish tricks, but also explain how some new technologies works and provide some additional details (for example performance comparison of older Robocopy and new one). I will call these articles &lt;strong&gt;Windows 7 Maddness &lt;/strong&gt;and I will try to group tips together.&lt;/p&gt;  &lt;p&gt;Hold on to see more :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=iIBpr1p5UwU:9Ob8IxQ_ISI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=iIBpr1p5UwU:9Ob8IxQ_ISI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/iIBpr1p5UwU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/iIBpr1p5UwU/windows-7-madness.html</link><author>noreply@blogger.com (Martin Zugec)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_l0BX6co7dqI/St3vFbHqIeI/AAAAAAAACI8/GbrzNMcHT0g/s72-c/Win7%20vs%20Leopard_thumb%5B4%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/10/windows-7-madness.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-4375560235317876111</guid><pubDate>Fri, 25 Sep 2009 15:41:00 +0000</pubDate><atom:updated>2009-09-25T17:41:51.262+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Sorting hashtable in Powershell</title><description>&lt;p&gt;I am using hashtables (or dictionaries) more and more in Powershell – once I figured out that syntax $Hashtable.Key works, it turned out to be extremely useful as something similar to custom class.&lt;/p&gt;  &lt;p&gt;However I run into an issue (maybe bug?) with sorting hashtables:   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;PS C:\&amp;gt; $X.Martin = &amp;quot;Zugec&amp;quot;   &lt;br /&gt;PS C:\&amp;gt; $X.Kamila = &amp;quot;Vlasakova&amp;quot;    &lt;br /&gt;PS C:\&amp;gt; $X.Filip = &amp;quot;Puntik&amp;quot;    &lt;br /&gt;PS C:\&amp;gt; $X.Tereza = &amp;quot;Liska&amp;quot;    &lt;br /&gt;PS C:\&amp;gt; $X | Sort Name &lt;/p&gt;  &lt;p&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; Value   &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; -----    &lt;br /&gt;Filip&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Puntik    &lt;br /&gt;Kamila&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Vlasakova    &lt;br /&gt;Tereza&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Liska    &lt;br /&gt;Martin&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zugec&lt;/p&gt;  &lt;p&gt;As you can see, output is not sorted. After a while I tried to use raw method that is used in .NET:&lt;/p&gt;  &lt;p&gt;PS C:\&amp;gt; $X.psbase.GetEnumerator() | Sort Name &lt;/p&gt;  &lt;p&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; Value   &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; -----    &lt;br /&gt;Filip&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Puntik    &lt;br /&gt;Kamila&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Vlasakova    &lt;br /&gt;Martin&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zugec    &lt;br /&gt;Tereza&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Liska&lt;/p&gt;  &lt;p&gt;As you can see, everything is sorted out correctly in this case. Another scenario where you could use GetEnumerator is if you want to handle name (key) and value:&lt;/p&gt;  &lt;p&gt;PS C:\&amp;gt; $X.psbase.GetEnumerator() | Where {$_.Name -eq &amp;quot;Martin&amp;quot;} &lt;/p&gt;  &lt;p&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; Value   &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; -----    &lt;br /&gt;Martin&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zugec&lt;/p&gt;  &lt;p&gt;Without using enumerator, you got access only to values.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=nQEIP1ZGPus:Uodk-Ia-F6k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=nQEIP1ZGPus:Uodk-Ia-F6k:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/nQEIP1ZGPus" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/nQEIP1ZGPus/sorting-hashtable-in-powershell.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>1</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/09/sorting-hashtable-in-powershell.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-3533111429833702335</guid><pubDate>Mon, 07 Sep 2009 17:02:00 +0000</pubDate><atom:updated>2009-09-07T19:02:38.359+02:00</atom:updated><title>How to display all performance counters in console</title><description>&lt;p&gt;Just run into this today – I am writing some scripts for Citrix License server and wanted to see which performance counters are available…&lt;/p&gt;  &lt;p&gt;Turned out to be pretty simple – just use “TypePerf” command with –q:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 53.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 214px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; C:\Users\Martin&amp;gt;typeperf -q | more&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; \TBS counters\CurrentResources&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; \TBS counters\CurrentContexts&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; \WSMan Quota Statistics(*)\Active Users&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; \WSMan Quota Statistics(*)\Active Operations&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; \WSMan Quota Statistics(*)\Active Shells&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; ...&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=kDfT6bEvjAQ:VP1Zu8TuXPA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=kDfT6bEvjAQ:VP1Zu8TuXPA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/kDfT6bEvjAQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/kDfT6bEvjAQ/how-to-display-all-performance-counters.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/09/how-to-display-all-performance-counters.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-4864114155514751917</guid><pubDate>Fri, 28 Aug 2009 18:18:00 +0000</pubDate><atom:updated>2009-08-28T20:18:12.065+02:00</atom:updated><title>Get or set file\directory attributes using Powershell</title><description>&lt;p&gt;This is just “reminder post” for me if I will need to use it in future… &lt;/p&gt;  &lt;p&gt;I wanted to create hidden folder using Powershell – in fact, it’s not very hard:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;$(MkDir “Martin Zugec”).Attributes = ‘Hidden’&lt;/p&gt;  &lt;p&gt;.Attributes is &lt;a href="http://msdn.microsoft.com/en-us/library/system.io.fileattributes(VS.71).aspx" target="_blank"&gt;FileAttributes enumeration&lt;/a&gt;, so you use same syntax when you want to create files. Below are available values:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="1000"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Archive&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Applications use this attribute to mark file\folder for backup or removal&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Compressed&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Is compressed&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Device&lt;/td&gt;        &lt;td valign="top" width="798"&gt;N/A – in future maybe ;) Looks promising :)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Directory&lt;/td&gt;        &lt;td valign="top" width="798"&gt;“File is directory” :)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Encrypted&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Encrypted&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Hidden&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Hidden&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Normal&lt;/td&gt;        &lt;td valign="top" width="798"&gt;If no other attributes are applied&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;NotContentIndexed&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Skip for indexing&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Offline&lt;/td&gt;        &lt;td valign="top" width="798"&gt;File\Folder is offline&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;ReadOnly&lt;/td&gt;        &lt;td valign="top" width="798"&gt;File\Folder is read-only&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;ReparsePoint&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Contains reparse point. Reparse point is user data associated with this entry – one example where reparse points are used is when you mount folder into another.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;SparseFile&lt;/td&gt;        &lt;td valign="top" width="798"&gt;Sparse files are usually large files whose data are mostly zeros. To be honest, I never saw sparse file as far as I know – even fake huge files (FSUtil File CreateNew) are not sparse files.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;System&lt;/td&gt;        &lt;td valign="top" width="798"&gt;System file&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Temporary&lt;/td&gt;        &lt;td valign="top" width="798"&gt;If file is marked as temporary, file system will try to keep all the data in memory for quicker access instead of flushing data back to harddisk. Of course temporary file should be deleted as soon as possible if not needed ;)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;If you want to change attribute of existing folder\file, it’s also very easy:&lt;/p&gt;  &lt;p&gt;$(Get-Item “Martin Zugec”).Attributes = ‘Hidden’&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=Icxc2KtC8D8:hjPGIWDm1HA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=Icxc2KtC8D8:hjPGIWDm1HA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/Icxc2KtC8D8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/Icxc2KtC8D8/get-or-set-filedirectory-attributes.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/get-or-set-filedirectory-attributes.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-3974468425412888852</guid><pubDate>Wed, 26 Aug 2009 19:06:00 +0000</pubDate><atom:updated>2009-08-26T22:14:22.601+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tricks</category><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>How to return multiple values from Powershell function</title><description>&lt;p&gt;I used this trick few times when I had function that had to return more values…&lt;/p&gt;  &lt;p&gt;As I wrote &lt;a href="http://martinzugec.blogspot.com/2009/08/easy-database-for-powershell.html" target="_blank"&gt;here&lt;/a&gt;, you can access dictionary object using syntax $Dictionary.Key… If your function returns dictionary, then you can use it to your advantage :)&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; Function Get-MultiValue () { &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;  [hashtable]$Return = @{} &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;  $Return.Success = $True &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;  $Return.PercentComplete = 100 &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;  $Return.ReturnTime = $(Get-Date) &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;  $Return.Username = &lt;span style="color: #006080"&gt;&amp;quot;Martin Zugec&amp;quot;&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;  Return $Return &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Usage is pretty obvious: &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; $Var = Get-MultiValue &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; If ($Var.Success) { &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     $Var.UserName &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     $Var.ReturnTime &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Easy and useful sometimes…&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=on3mLtD-AUY:x98qfZd2ges:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=on3mLtD-AUY:x98qfZd2ges:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/on3mLtD-AUY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/on3mLtD-AUY/how-to-return-multiple-values-from.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>4</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/how-to-return-multiple-values-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-5450198993507075952</guid><pubDate>Mon, 24 Aug 2009 17:35:00 +0000</pubDate><atom:updated>2009-08-24T19:35:36.703+02:00</atom:updated><title>New-Enum for Powershell v2</title><description>&lt;p&gt;&lt;a href="http://martinzugec.blogspot.com/2009/07/broken-new-enum-in-powershell-v2.html" target="_blank"&gt;Recently I wrote&lt;/a&gt; about new-enum function that should work both in Posh v1 and v2… Well, it doesn’t, because v1 will throw an error on @Args.&lt;/p&gt;  &lt;p&gt;Below is updated version that should work in both powershells:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;# Supports creation of custom Enums during runtime. &lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;# Because CoreFunctions and CustomFunctions requires already some enumerations (specifically LogType), it must be initialized in main script.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; Global:S4M\New-Enum ([string] $name, [&lt;span class="kwrd"&gt;switch&lt;/span&gt;]$FixMode, [array]$Members = @()) {&lt;br /&gt;&lt;br /&gt;    $Members += $Args &lt;br /&gt;&lt;br /&gt;    $appdomain = [System.Threading.Thread]::GetDomain()&lt;br /&gt;    $assembly = new-object System.Reflection.AssemblyName&lt;br /&gt;    $assembly.Name = &lt;span class="str"&gt;&amp;quot;EmittedEnum&amp;quot;&lt;/span&gt;&lt;br /&gt;    $assemblyBuilder = $appdomain.DefineDynamicAssembly($assembly, &lt;br /&gt;    [System.Reflection.Emit.AssemblyBuilderAccess]::Save &lt;span class="preproc"&gt;-bor&lt;/span&gt; [System.Reflection.Emit.AssemblyBuilderAccess]::Run);&lt;br /&gt;    $moduleBuilder = $assemblyBuilder.DefineDynamicModule(&lt;span class="str"&gt;&amp;quot;DynamicModule&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DynamicModule.mod&amp;quot;&lt;/span&gt;);&lt;br /&gt;    $enumBuilder = $moduleBuilder.DefineEnum($name, [System.Reflection.TypeAttributes]::Public, [System.Int32]);&lt;br /&gt;    &lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;($i = 0; $i &lt;span class="preproc"&gt;-lt&lt;/span&gt; $Members.Length; $i++) {&lt;br /&gt;        If (([string]($Members[$i])).Contains(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;)) {&lt;br /&gt;            [string]$EnumName = [string](($Members[$i].Split(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;))[0])&lt;br /&gt;            $Null = $enumBuilder.DefineLiteral($EnumName, [int]($Members[$i].Split(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;))[1]);&lt;br /&gt;        } Else {&lt;br /&gt;            $Null = $enumBuilder.DefineLiteral($Members[$i], $i);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    $enumBuilder.CreateType() &amp;gt; $Null;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="rem"&gt;#Used to fix issue with Powershell v2&lt;/span&gt;&lt;br /&gt;    If ($Host.Version.Major &lt;span class="preproc"&gt;-eq&lt;/span&gt; 1 -or $FixMode) {&lt;br /&gt;        $enumBuilder.CreateType() &amp;gt; $Null;&lt;br /&gt;    } Else {&lt;br /&gt;        S4M\New-Enum -FixMode -Name $name -Members $Members&lt;br /&gt;        $enumBuilder.CreateType() &amp;gt; $Null;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=3bwsFfUQqEM:KIeUs29jWpk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=3bwsFfUQqEM:KIeUs29jWpk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/3bwsFfUQqEM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/3bwsFfUQqEM/new-enum-for-powershell-v2.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/new-enum-for-powershell-v2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-5124087336874588215</guid><pubDate>Fri, 14 Aug 2009 10:18:00 +0000</pubDate><atom:updated>2009-08-14T12:18:09.475+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Bug in PowerShell?</title><description>&lt;p&gt;Yesterday I wrote about a way how to use [HashTable] type as single storage for different values… Well, code has to be changed a bit.&lt;/p&gt;  &lt;p&gt;Remember that you can access member by using $People.$Foo? But it doesn’t work always, so you should use $People.[string]$Foo instead.&lt;/p&gt;  &lt;p&gt;Have a look at following code:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;[hashtable]$Collection = @{}&lt;br /&gt;For ($i = 0; $i &lt;span class="preproc"&gt;-lt&lt;/span&gt; 10; $i += 1) {$Collection.$i = $i}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Looks fine, doesn’t it? Well, let’s have a look at keys:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;PS C:\&amp;gt; $Collection.Keys&lt;br /&gt;9&lt;br /&gt;8&lt;br /&gt;7&lt;br /&gt;6&lt;br /&gt;5&lt;br /&gt;4&lt;br /&gt;3&lt;br /&gt;2&lt;br /&gt;1&lt;br /&gt;0&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Still ok. Now try to retrieve value for one of the keys:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;PS C:\&amp;gt; $Collection.9&lt;br /&gt;Unexpected token &lt;span class="str"&gt;'.9'&lt;/span&gt; &lt;span class="kwrd"&gt;in&lt;/span&gt; expression or statement.&lt;br /&gt;At line:1 char:14&lt;br /&gt;+ $Collection.9 &amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;    + CategoryInfo          : ParserError: (.9:String) [], ParentContainsError&lt;br /&gt;   RecordException&lt;br /&gt;    + FullyQualifiedErrorId : UnexpectedToken&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hmmmmmm, error. Let’s have a look at key type:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;PS C:\&amp;gt; $Collection.Keys | ForEach {$_.GetType()}&lt;br /&gt;&lt;br /&gt;IsPublic IsSerial Name                                     BaseType&lt;br /&gt;-------- -------- ----                                     --------&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;br /&gt;True     True     Int32                                    System.ValueType&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Have you noticed something? Key should be always string, however in this case, PowerShell doesn’t convert it automatically. Surprisingly, this allows us to have 2 keys with same name – something that should never happen ;)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;PS C:\&amp;gt; $Collection.&lt;span class="str"&gt;&amp;quot;9&amp;quot;&lt;/span&gt; = 9&lt;br /&gt;PS C:\&amp;gt; $Collection.Keys&lt;br /&gt;9&lt;br /&gt;9&lt;br /&gt;8&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ok, and here comes solution. Whenever you assign key, specify that it is string:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;[hashtable]$Collection = @{}&lt;br /&gt;For ($i = 0; $i &lt;span class="preproc"&gt;-lt&lt;/span&gt; 10; $i += 1) {$Collection.[string]$i = $i}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=4Z734LiddSM:lN6Cxw6ahD0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=4Z734LiddSM:lN6Cxw6ahD0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/4Z734LiddSM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/4Z734LiddSM/bug-in-powershell.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/bug-in-powershell.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-7874962045730617045</guid><pubDate>Fri, 14 Aug 2009 08:35:00 +0000</pubDate><atom:updated>2009-08-14T10:35:23.705+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Create System.Array in PowerShell</title><description>&lt;p&gt;Some months ago I posted following &lt;a href="http://groups.google.com/group/microsoft.public.windows.powershell/browse_thread/thread/b8381187033edbad/0119e071a82ee17b#0119e071a82ee17b" target="_blank"&gt;question&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;I am working with MFCOM (COM interface for Citrix) and one of      &lt;br /&gt;properties requires Array as input type... &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;So I tried simple code, [Array]$Schedules = @(), however to my      &lt;br /&gt;surprise System.Array is only base object (never realized that       &lt;br /&gt;before). &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;# [array]$Schedules = @()      &lt;br /&gt;# $Schedules.GetType() &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IsPublic IsSerial 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; BaseType      &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; --------       &lt;br /&gt;True&amp;#160;&amp;#160;&amp;#160;&amp;#160; True&amp;#160;&amp;#160;&amp;#160;&amp;#160; Object[]       &lt;br /&gt;System.Array &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;If I try to assign this value to COM, it will return error message      &lt;br /&gt;stating that input type is not supported. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Obviously, no answers so far, just Gerd Schneider confirmed that this is an issue. &lt;/p&gt;  &lt;p&gt;Long story short, it can be done pretty easily:&lt;/p&gt;  &lt;p&gt;[Object[]]$Schedules = @()&lt;/p&gt;  &lt;p&gt;Of course, you can replace Object with your own type:   &lt;br /&gt;[Byte[]]$Bytes = $Source.ToCharArray()&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=nSLmgD0cVQ8:euVExhhsaeg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=nSLmgD0cVQ8:euVExhhsaeg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/nSLmgD0cVQ8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/nSLmgD0cVQ8/create-systemarray-in-powershell.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/create-systemarray-in-powershell.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-2470960492855103800</guid><pubDate>Thu, 13 Aug 2009 16:56:00 +0000</pubDate><atom:updated>2009-08-13T18:56:32.739+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tricks</category><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Easy database for Powershell</title><description>&lt;p&gt;I run into situation with my current project where I need to have easy to use translation table. Nothing too complicated – just be able to search for PackageID (we are talking about SCCM) and retrieve location of that package.&lt;/p&gt;  &lt;p&gt;Ideal candidate for such tasks is HashTable or dictionary – each entry in hashtable contains Key and Value. Key is unique identifier of that entry and allows you to easily retrieve value.&lt;/p&gt;  &lt;p&gt;Initialization of hashtable is very simple:   &lt;br /&gt;[HashTable]$People = @{}&lt;/p&gt;  &lt;p&gt;Also adding members is easy, either powershell way:   &lt;br /&gt;$People += “Martin” = “Zugec”    &lt;br /&gt;or using .NET approach:    &lt;br /&gt;$People.Add(“Martin”, “Zugec”)&lt;/p&gt;  &lt;p&gt;In order to retrieve surname, easiest method is to used built-in functionality of Posh – it makes it very easy for you:   &lt;br /&gt;$People.Martin&lt;/p&gt;  &lt;p&gt;Returned value is Zugec.&lt;/p&gt;  &lt;p&gt;Ok, so far pretty easy. However I realized that for my project I don’t need only surname (package location), but also company. As I said before – hashtable is collection of key\value pairs and key must be unique. Well, value doesn’t need to be single value ;)&lt;/p&gt;  &lt;p&gt;$People += @{“Martin Zugec” = @{“Name” = “Martin”; “Surname” = “Zugec”; “Company” = “Login Consultants”}}&lt;/p&gt;  &lt;p&gt;In this case, I decided to use hashtable as value of hashtable. I really like the way how complicated stuff can be done easily using Powershell :)&lt;/p&gt;  &lt;p&gt;To retrieve company, I can use $People.”Martin Zugec”.Company&lt;/p&gt;  &lt;p&gt;Pretty useful sometimes&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=ab6pniHDvCo:hV9B1Clo7Vk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=ab6pniHDvCo:hV9B1Clo7Vk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/ab6pniHDvCo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/ab6pniHDvCo/easy-database-for-powershell.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>1</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/08/easy-database-for-powershell.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-5826300234992223862</guid><pubDate>Tue, 28 Jul 2009 17:20:00 +0000</pubDate><atom:updated>2009-07-28T19:20:06.059+02:00</atom:updated><title>How to convert [String] to [Boolean]</title><description>&lt;p&gt;If you always try to specify the type (as I do), maybe you already figured out that you cannot convert string to boolean in Powershell:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;[Boolean]$Var = $True&lt;br /&gt;$Var = “False”&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;Cannot convert value &amp;quot;System.String&amp;quot; to &lt;/font&gt;&lt;font color="#ff0000"&gt;type &amp;quot;System.Boolean&amp;quot;, parameters of th &lt;br /&gt;    &lt;br /&gt;is type only accept booleans or numbers, use $true, $false, 1 or 0 instead. &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;At line:1 char:5 &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;+ $Var &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;#160; = &amp;quot;False&amp;quot; &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + CategoryInfo&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : MetadataError: (:) [], ArgumentTransformationMet &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160; adataException &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + FullyQualifiedErrorId : RuntimeException&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Obviously, you should use $False or 0 instead… Sometimes this can be an issue – especially if you read your configuration from XML file, it is returned as string (so it is “0” instead of 0).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There is however workaround for this that allows you to convert string to boolean:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;[Boolean]$Var = $False&lt;br /&gt;$Var = [System.Convert]::ToBoolean(&lt;span class="str"&gt;&amp;quot;True&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=ifmD713-tR8:rZVOndBmWc8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=ifmD713-tR8:rZVOndBmWc8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/ifmD713-tR8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/ifmD713-tR8/how-to-convert-string-to-boolean.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/07/how-to-convert-string-to-boolean.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-8314578975704041739</guid><pubDate>Mon, 27 Jul 2009 16:56:00 +0000</pubDate><atom:updated>2009-07-27T18:56:09.927+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Broken New-Enum in Powershell v2</title><description>&lt;p&gt;I LOVE using enums in Powershell. If you don’t know about enumerations, you should definitely learn to use them (&lt;a href="http://blogs.msdn.com/powershell/archive/2008/12/14/what-the-heck-is-an-enum.aspx" target="_blank"&gt;What the heck is an ENUM?&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;I will try to describe it in my words. Enums allows you to define set of allowed arguments. Consider example when I am working with a technology that considers 0 as Write, 1 as Read and 2 as ReadWrite. You will remember that while you work with it, but what if you return back to your own scripts after one year?&lt;/p&gt;  &lt;p&gt;Normally you would write following script:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Function Set-Security ([int]$Access = 1) {…}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;$Access (as you probably already knows) means which permissions you want to give and by default we set it to Read. Your code will then follow with checking if user provided correct input&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Switch ($Access) {      &lt;br /&gt;0 {“Write”}       &lt;br /&gt;1 {“Read”}       &lt;br /&gt;2 {“ReadWrite”}       &lt;br /&gt;Default {“Not supported”}       &lt;br /&gt;}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Later on you will decide that you want to add other type (Custom) and you need to rewrite all your scripts that are using this syntax. Not talking about fact that you require from users of your scripts to use techie language and use numbers instead of words.&lt;/p&gt;  &lt;p&gt;Instead what you can do is to create following:    &lt;br /&gt;New-Enum MyAccess Write Read ReadWrite (function New-Enum was &lt;a href="http://blogs.msdn.com/powershell/archive/2007/01/23/how-to-create-enum-in-powershell.aspx" target="_blank"&gt;taken from Powershell blog&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Now your function can be simplified:    &lt;br /&gt;&lt;em&gt;Function Set-Security ([MyAccess]$Access) {}&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;You can call your function using following syntax now:    &lt;br /&gt;&lt;em&gt;Set-Security –Access 0      &lt;br /&gt;Set-Security –Access “Write”       &lt;br /&gt;Set-Security –Access [MyAccess]::Write&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you want to extend your enumeration, you simply add new enumeration and all your functions will support it out of the box.&lt;/p&gt;  &lt;p&gt;Using enumerations is especially useful in case you create complex scripts – for example if you export some objects to XML and import it later on. You simply specify [string]$X = [MyAccess]$Var&lt;/p&gt;  &lt;p&gt;In your XML file, instead of non-sense numbers you will get nice string values. Import afterwards is done same way: [MyAccess]$Var = $X. I got very good experiences with this approach especially when using COM based environments like MFCOM.&lt;/p&gt;  &lt;p&gt;Ok, so are you into enumerations? They are perfect – however they doesn’t work in Powershell v2 :( New-Enum function works correctly and doesn’t return any error, however enumerations are not created. If you run SAME New-Enum twice, then everything works as expected.&lt;/p&gt;  &lt;p&gt;I got my slightly modified version of New-Enum that works on Posh V2 also:&lt;/p&gt;  &lt;p&gt;   &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt; &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; Global:S4M\New-Enum ([string] $name, [&lt;span class="kwrd"&gt;switch&lt;/span&gt;]$FixMode) { &lt;br /&gt;&lt;br /&gt;    $appdomain = [System.Threading.Thread]::GetDomain() &lt;br /&gt;    $assembly = new-object System.Reflection.AssemblyName &lt;br /&gt;    $assembly.Name = &lt;span class="str"&gt;&amp;quot;EmittedEnum&amp;quot;&lt;/span&gt; &lt;br /&gt;    $assemblyBuilder = $appdomain.DefineDynamicAssembly($assembly, &lt;br /&gt;    [System.Reflection.Emit.AssemblyBuilderAccess]::Save &lt;span class="preproc"&gt;-bor&lt;/span&gt; [System.Reflection.Emit.AssemblyBuilderAccess]::Run); &lt;br /&gt;    $moduleBuilder = $assemblyBuilder.DefineDynamicModule(&lt;span class="str"&gt;&amp;quot;DynamicModule&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;DynamicModule.mod&amp;quot;&lt;/span&gt;); &lt;br /&gt;    $enumBuilder = $moduleBuilder.DefineEnum($name, [System.Reflection.TypeAttributes]::Public, [System.Int32]); &lt;br /&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;($i = 0; $i &lt;span class="preproc"&gt;-lt&lt;/span&gt; $Args.Length; $i++) { &lt;br /&gt;        If (([string]($Args[$i])).Contains(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;)) { &lt;br /&gt;            [string]$EnumName = [string](($Args[$i].Split(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;))[0]) &lt;br /&gt;            $Null = $enumBuilder.DefineLiteral($EnumName, [int]($Args[$i].Split(&lt;span class="str"&gt;&amp;quot;=&amp;quot;&lt;/span&gt;))[1]); &lt;br /&gt;        } Else { &lt;br /&gt;            $Null = $enumBuilder.DefineLiteral($Args[$i], $i); &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;    &lt;span class="rem"&gt;#Used to fix issue with Powershell v2 &lt;/span&gt;&lt;br /&gt;    If ($Host.Version.Major &lt;span class="preproc"&gt;-eq&lt;/span&gt; 1 -or $FixMode) { &lt;br /&gt;        $enumBuilder.CreateType() &amp;gt; $Null; &lt;br /&gt;    } Else { &lt;br /&gt;        S4M\New-Enum -FixMode -Name $Name @Args &lt;br /&gt;        $enumBuilder.CreateType() &amp;gt; $Null; &lt;br /&gt;    } &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This version will automatically detect which version are you running and in case you don’t run Powershell V1, it will automatically re-run New-Enum once more. Interesting is usage of @Args instead of $Args – I will blog about this next time ;)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This function contains 2 changes to original:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;1.) You can assign special values to enumerations:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;New-Enum MyEnum Test=1 Test2=2 Test3=256&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;2.) Powershell v2 compatibility is fixed&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5OsVGljcDVI:fcrnc_GKyQg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=5OsVGljcDVI:fcrnc_GKyQg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/5OsVGljcDVI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/5OsVGljcDVI/broken-new-enum-in-powershell-v2.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>1</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/07/broken-new-enum-in-powershell-v2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-6127995420921342228</guid><pubDate>Sun, 26 Jul 2009 14:56:00 +0000</pubDate><atom:updated>2009-07-26T16:56:22.680+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blog</category><title>What to expect in near future?</title><description>&lt;p&gt;I was thinking about blogging in general and this blog in particular in last few days. And I made decision that I want to be more specific.&lt;/p&gt;  &lt;p&gt;Those of you that knows me also know that I got tired by technology pretty soon – once I know it, I am looking for something else. There is however always one thing that keeps me interested – automating things ;)&lt;/p&gt;  &lt;p&gt;So I decided that I will dedicate this blog to PowerShell – in last months I automated many technologies from XenApp through SCCM\Altiris to App-V. Every single one of them was interesting and I would like to post about using Posh V2 much more in upcoming months. &lt;/p&gt;  &lt;p&gt;Also I would like to include all technologies related – from Subversion through different editors and tools to interesting articles. &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=xcq6PQQmwdE:Nd4yUsQ97Qw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=xcq6PQQmwdE:Nd4yUsQ97Qw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/xcq6PQQmwdE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/xcq6PQQmwdE/what-to-expect-in-near-future.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/07/what-to-expect-in-near-future.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-4621803641593189937</guid><pubDate>Sun, 12 Jul 2009 11:08:00 +0000</pubDate><atom:updated>2009-07-12T13:08:17.231+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tricks</category><category domain="http://www.blogger.com/atom/ns#">Interesting facts</category><title>Adaptive smooth movie streaming</title><description>&lt;p&gt;Wow, this is really nice. Jeffrey Snover posted following on Facebook.&lt;/p&gt;  &lt;p&gt;It’s best video streaming I ever saw… Very smooth even behind proxy and try to click in the middle of video – it will almost instantly continue :)&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.iis.net/media/experiencesmoothstreaming" href="http://www.iis.net/media/experiencesmoothstreaming"&gt;http://www.iis.net/media/experiencesmoothstreaming&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Really, really nice. Ah, and not to forget – Big Bucks Bunny is already really nice movie&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=DZYjFcGBDSs:_Cl7i443BwM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=DZYjFcGBDSs:_Cl7i443BwM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/DZYjFcGBDSs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/DZYjFcGBDSs/adaptive-smooth-movie-streaming.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>1</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/07/adaptive-smooth-movie-streaming.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-6715295723765967086</guid><pubDate>Sun, 12 Jul 2009 11:07:00 +0000</pubDate><atom:updated>2009-07-12T13:07:37.026+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Subversion</category><title>Using svn:externals with TortoiseSVN and FSFS repository</title><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you use Subversion and TortoiseSVN client with repository hosted on filesystem, this can be interesting for you.&lt;/p&gt;  &lt;p&gt;Many many years ago (4,5?) when I implemented my first repository, I used filesystem (and I still like it, simple and functional with hook scripts). Only drawback was syntax – which varied between command line subversion client and tortoise client.&lt;/p&gt;  &lt;p&gt;In general, syntax is &lt;em&gt;protocol&lt;/em&gt;://&lt;em&gt;Location&lt;/em&gt;. Problem is if you are hosting your repository in UNC path. Then syntax looks really strange: &lt;a href="file:///\server\share/repo"&gt;file:///\server\share/repo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Notice “\” and “/” – sometimes it works, sometimes you have to fight with it.&lt;/p&gt;  &lt;p&gt;Recently I worked with project that was using svn:externals (you can link different repositories together, it’s like symlink on filesystem – even better, you can point to same repository, but different revision ;)). Suddenly it rejected to download externals. After a while I realized they changed syntax, you can still use old syntax, however usage of new is required in case of svn:externals (probably bug). New syntax is much easier to handle and I like it a lot.&lt;/p&gt;  &lt;p&gt;Compare for yourself :) &lt;a href="file:///\server\share/repo"&gt;file:///\server\share/repo&lt;/a&gt; compared to &lt;a href="file://server/share/repo"&gt;file://server/share/repo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="file://server/share/repo"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=yfPYpEEpsSE:SdlPcZ62jSA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=yfPYpEEpsSE:SdlPcZ62jSA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/yfPYpEEpsSE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/yfPYpEEpsSE/using-svnexternals-with-tortoisesvn-and.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>5</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/07/using-svnexternals-with-tortoisesvn-and.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-6236097965853261005</guid><pubDate>Fri, 19 Jun 2009 05:13:00 +0000</pubDate><atom:updated>2009-06-19T07:13:24.763+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tricks</category><category domain="http://www.blogger.com/atom/ns#">PowerShell</category><title>Remove all special characters from string</title><description>&lt;p&gt;What is easiest way to remove all special characters from string using Powershell?&lt;/p&gt;  &lt;p&gt;Of course regex, but here you can see how it works:    &lt;br /&gt;[System.Text.RegularExpressions.Regex]::Replace($Text,&amp;quot;[^1-9a-zA-Z_]&amp;quot;,&amp;quot; &amp;quot;);&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For example &lt;/p&gt;  &lt;p&gt;PS C:\Users\Martin&amp;gt; [System.Text.RegularExpressions.Regex]::Replace(&amp;quot;I got cool    &lt;br /&gt;n1ck%/\/\name($7&amp;amp;&amp;quot;,&amp;quot;[^1-9a-zA-Z_]&amp;quot;,&amp;quot; &amp;quot;);     &lt;br /&gt;I got cool n1ck&amp;#160;&amp;#160;&amp;#160;&amp;#160; name&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I am replacing special characters with space, however of course you can use whatever you want – typically “_”&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qOo1CGow52o:82TCD6Paxcw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qOo1CGow52o:82TCD6Paxcw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/qOo1CGow52o" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/qOo1CGow52o/remove-all-special-characters-from.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>2</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/06/remove-all-special-characters-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-7927443922469746110</guid><pubDate>Fri, 19 Jun 2009 05:13:00 +0000</pubDate><atom:updated>2009-06-19T07:13:03.236+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Fun</category><category domain="http://www.blogger.com/atom/ns#">Interesting facts</category><title>GrooveShark is down 2</title><description>&lt;p&gt;+- 1 month ago Grooveshark was down (this site allows you to search&amp;amp;play music online and I like it a lot)… I &lt;a href="http://martinzugec.blogspot.com/2009/05/grooveshark-is-down.html" target="_blank"&gt;posted&lt;/a&gt; about it – and what is interesting, I was not angry at all, but it made my day because instead of anonymous message like “Under construction” or “Sorry” they had really funny message (see original post).&lt;/p&gt;  &lt;p&gt;Today Grooveshark is down again and I am not mad at them, because again I received very funny message :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_l0BX6co7dqI/SjseXN4ZRTI/AAAAAAAABhA/DRgRuBV0y7Q/s1600-h/image2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_l0BX6co7dqI/SjseXrBbRoI/AAAAAAAABhE/oZ5VbrtQAa0/image_thumb.png?imgmax=800" width="215" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Reminds me of Google Doogle – that’s the logo at main page…&lt;/p&gt;  &lt;p&gt;Good luck with those pickles :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qluLqfINfTY:BXizYGM4PHo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qluLqfINfTY:BXizYGM4PHo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/qluLqfINfTY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/qluLqfINfTY/grooveshark-is-down-2.html</link><author>noreply@blogger.com (Martin Zugec)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_l0BX6co7dqI/SjseXrBbRoI/AAAAAAAABhE/oZ5VbrtQAa0/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/06/grooveshark-is-down-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-3006335262394273150</guid><pubDate>Sun, 14 Jun 2009 18:10:00 +0000</pubDate><atom:updated>2009-06-14T20:11:35.226+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Citrix</category><category domain="http://www.blogger.com/atom/ns#">Tricks</category><title>Speed up Access Suite Console load times</title><description>&lt;p&gt;BTW am I the only one that is using his blog posts as “Post-it”? :) &lt;/p&gt;  &lt;p&gt;Anyway, here comes quick tip. If you are using Access Suite Console (management console for Citrix products), maybe you noticed that it is loading extremely slow. I meant EXTREMELY.&lt;/p&gt;  &lt;p&gt;Fix is pretty easy in fact – all you need to do is to disable certificate revocation check. &lt;/p&gt;  &lt;p&gt;There are two ways how you can change it.&lt;/p&gt;  &lt;p&gt;1.) Set following registry: &lt;/p&gt;  &lt;p&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing]&lt;/p&gt;  &lt;p&gt;&amp;quot;State&amp;quot;=dword:00023e00&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2.) Or use Internet Explorer:    &lt;br /&gt;Internet Explorer --&amp;gt; Tools --&amp;gt; Internet Options --&amp;gt; Advanced --&amp;gt; Security: Uncheck &amp;quot;Check for publishers certificate revocation&amp;quot;&lt;/p&gt;  &lt;p&gt;All credits go to my colleague Carsten Wallner. &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=DtIBrqDBlGc:A0I1OuxxHaM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=DtIBrqDBlGc:A0I1OuxxHaM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/DtIBrqDBlGc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/DtIBrqDBlGc/speed-up-access-suite-console-load.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/06/speed-up-access-suite-console-load.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-931485152542336120</guid><pubDate>Fri, 12 Jun 2009 10:37:00 +0000</pubDate><atom:updated>2009-06-12T12:49:06.589+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Presentations</category><category domain="http://www.blogger.com/atom/ns#">Cloud</category><title>Business cloud computing presentation</title><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;as promised yesterday, you can find my presentation about cloud computing here. Soon I would like to wrote also series of blog posts about cloud computing, you can have a look at ppt meanwhile:&lt;/p&gt; &lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/Presentations/BusinessCloud.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qwuEO3ZCAOg:znGt5T9lmZw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=qwuEO3ZCAOg:znGt5T9lmZw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/qwuEO3ZCAOg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/qwuEO3ZCAOg/business-cloud-computing-presentation.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>0</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/06/business-cloud-computing-presentation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1891832002873524183.post-1115492394130111806</guid><pubDate>Wed, 10 Jun 2009 01:28:00 +0000</pubDate><atom:updated>2009-06-10T03:28:50.270+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Recommendations</category><category domain="http://www.blogger.com/atom/ns#">Productivity</category><category domain="http://www.blogger.com/atom/ns#">Interesting facts</category><title>See results from Bing, Google and Yahoo on one page</title><description>&lt;p&gt;&lt;a href="http://blindsearch.fejus.com" target="_blank"&gt;Quite interesting project&lt;/a&gt;… You enter any search term you are interested in and three columns will appear.&lt;/p&gt;  &lt;p&gt;Each one of them represents one of major search players: Bing, Google and Yahoo. Trick is that you &lt;strong&gt;don’t&lt;/strong&gt; see names :) So you just vote which one was most useful for you and then names appears.&lt;/p&gt;  &lt;p&gt;Surprisingly, Bing is doing pretty well – most of the time it returned best results. Surprise, surprise, I want to use this site for a moment and see which one suits me best.&lt;/p&gt;  &lt;p&gt;Only shame is that currently you don’t see results :(&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Some douche is gaming the system, I've removed the ability to see the results until I sort this out. Meanwhile you can still have fun playing with blind search. Feel free to blame the douche for ruining it for everybody. Meanwhile, I wouldn’t take this a scientific whats-e-ma-jing, it's just a bit of observational fun.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Well, thank you “douche” :(&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=u5DFvDVzYtY:1e2Yb9DbqO4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MartinZugecBlog?a=u5DFvDVzYtY:1e2Yb9DbqO4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MartinZugecBlog?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MartinZugecBlog/~4/u5DFvDVzYtY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/MartinZugecBlog/~3/u5DFvDVzYtY/see-results-from-bing-google-and-yahoo.html</link><author>noreply@blogger.com (Martin Zugec)</author><thr:total>1</thr:total><feedburner:origLink>http://martinzugec.blogspot.com/2009/06/see-results-from-bing-google-and-yahoo.html</feedburner:origLink></item></channel></rss>
