# Thursday, March 26, 2009

This is a bit of a hardcore example of the power that modules have brought to the table in v2.0. First, a little background - PowerShell’s type adaptation system has always ignored the concept of interfaces. Frankly, it never really needed to pay them any attention. The adapted view of any instance of a .NET class is just an aggregate of all its methods; the most derived instance is the default, and only, view. This is the most simple and most frequently used view. However, this all goes to hell when you bring in the notion of explicit interfaces.

Explicit Interface Definitions

Here’s an example of a C# class, Test, with two interfaces: IFace, and IFaceEx. I’ve put this whole example in PowerShell script so you can easily test it without firing up Visual Studio. Add-Type cmdlet to the rescue!

if (-not ("Test" -as [type])) {    
    add-type @"
        public interface IFace {
            string Hello(string name);
            string Goodbye();
        }
        
        public interface IFaceEx {
            string Hello(string name);
            string Goodbye();
            string Prop1 {
                get;
                set;
            }                
        }
        
        public class Test : IFace, IFaceEx {
            public string Hello(string name) {
                return "Hello" + name + " from IFace";
            }
            public string Goodbye() {
                return "Goodbye from IFace";
            }            
            string IFaceEx.Hello(string name) {
                return "Hello " + name + " from IFaceEx";
            }
            string IFaceEx.Goodbye() {
                return "Goodbye from IFaceEx";
            }
            
            private string _prop1 = "Foo";
            
            string IFaceEx.Prop1 {
                get { return _prop1; }
                set { _prop1 = value; }
            }
        }
"@    
}

If you new up an instance of Test, you’ll see that the explicit interface definitions are hidden. Any calls to Hello(string) will invoke the IFace implementation.

There is no way to call IFaceEx.Hello without using reflection!

So, this is where the beauty of modules can help us. The following function will take an instance of a .NET class, and the interface you want a  reference to, and will return a PSCustomObject with ScriptMethods and ScriptProperties bound to that interface’s contract. You don’t have to do this only with explicit interfaces, any interfaces will work ;-)

Introducing Get-Interface

A script is worth a thousand words.

function Get-Interface {

#.Synopsis
#   Allows PowerShell to call specific interface implementations on any .NET object. 
#.Description
#   Allows PowerShell to call specific interface implementations on any .NET object. 
#
#   As of v2.0, PowerShell cannot cast .NET instances to a particular interface. This makes it
#   impossible (shy of reflection) to call methods on explicitly implemented interfaces.   
#.Parameter Object
#   An instance of a .NET class from which you want to get a reference to a particular interface it defines.
#.Parameter InterfaceType
#   An interface type, e.g. [idisposable], implemented by the target object.
#.Example
#   // a class with explicitly implemented interface   
#   public class MyObj : IDisposable {
#      void IDisposable.Dispose()
#   }
#   
#   ps> $o = new-object MyObj
#   ps> $i = get-interface $o ([idisposable])
#   ps> $i.Dispose()      
#.ReturnValue
#   A PSCustomObject with ScriptMethods and ScriptProperties representing methods and properties on the target interface.
#.Notes
#   AUTHOR:    Oisin Grehan http://www.nivot.org/
#   LASTEDIT:  2009-03-25 11:35:23

    [CmdletBinding()]
    param(
        [ValidateNotNull()]
        $Object,
        
        [ValidateScript( { $_.IsInterface } )]
        [type]$InterfaceType
    )

    $private:t  = $Object.GetType()
    
    try {
        
        $private:m  = $t.GetInterfaceMap($InterfaceType)

    } catch [argumentexception] {
        
        throw "Interface $($InterfaceType.Name) not found on ${t}!"
    }

    $private:im = $m.InterfaceMethods
    $private:tm = $m.TargetMethods
    
    # TODO: use param blocks in functions instead of $args
    #       so method signatures are visible via get-member
    
    $body = [scriptblock]::Create(@"
        param(`$o, `$i)    
        
        `$script:t  = `$o.GetType()
        `$script:m  = `$t.GetInterfaceMap(`$i)
        `$script:im = `$m.InterfaceMethods
        `$script:tm = `$m.TargetMethods
        
        # interface methods $($im.count)
        # target methods $($tm.count)
        
        $(
            for ($ix = 0; $ix -lt $im.Count; $ix++) {
                $mb = $im[$ix]
                @"
                function $($mb.Name) {
                    `$tm[$ix].Invoke(`$o, `$args)
                }

                $(if (!$mb.IsSpecialName) {
                    @"
                    Export-ModuleMember $($mb.Name)

"@
                })
"@
            }
        )
"@)
    write-verbose $body.tostring()    
    
    # create dynamic module
    $module = new-module -ScriptBlock $body -Args $Object, $InterfaceType -Verbose
        
    # generate method proxies - all exported members become scriptmethods
    # however, we are careful not to export getters and setters.
    $custom = $module.AsCustomObject()
    
    # add property proxies - need to use scriptproperties here.
    # modules cannot expose true properties, only variables and 
    # we cannot intercept variables get/set.
    
    $InterfaceType.GetProperties() | % {

        $propName = $_.Name
        $getter   = $null
        $setter   = $null
       
        if ($_.CanRead) {
            
            # where is the getter methodinfo on the interface map?
            $ix = [array]::indexof($im, $_.GetGetMethod())
            
            # bind the getter scriptblock to our module's scope
            # and generate script to call target method
            $getter = $module.NewBoundScriptBlock(
                [scriptblock]::create("`$tm[{0}].Invoke(`$o, @())" -f $ix))
        }
        
        if ($_.CanWrite) {
            
            # where is the setter methodinfo on the interface map?
            $ix = [array]::indexof($im, $_.GetSetMethod())
            
            # bind the setter scriptblock to our module's scope
            # and generate script to call target method
            $setter = $module.NewBoundScriptBlock(
                [scriptblock]::create(
                    "param(`$value); `$tm[{0}].Invoke(`$o, `$value)" -f $ix))
        }
        
        # add our property to the pscustomobject
        $prop = new-object management.automation.psscriptproperty $propName, $getter, $setter
        $custom.psobject.properties.add($prop)
    }
    
    # insert the interface name at the head of the typename chain (for get-member info)
    $custom.psobject.TypeNames.Insert(0, $InterfaceType.FullName)
    
    # dump our pscustomobject to pipeline
    $custom
}
Here's how to use it, with our example Test class as added earlier:
$if = Get-Interface (new-object test) ([ifaceex]) -verbose
$if.Hello("Oisin") # returns Hello Oisin from IFaceEx

$if.Prop1 = "Test" # property setter
$if.Prop1 # propery getter

Have fun!

posted on Thursday, March 26, 2009 9:02:44 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] Trackback
Related posts:
PowerShell Script Provider
PowerShell ISE Hacking: Change default save encoding to ASCII
PowerShell 2.0 – PSCX Labs: Invoke-Reflector
PowerShell 2.0 – Developer Essentials #1 – Initializing a Runspace with a Module
SharePoint Resources & Localization – What, Where and Why?
PowerShell 2.0 – Partial Application of Functions and Cmdlets
Tracked by:
"http://www.dexterlegaspi.com/journal/?p=57" (http://www.dexterlegaspi.com/journ... [Pingback]

Referred by:
http://twitturls.com/ [Referral]
http://tinyurl.com/c5wrhh [Referral]
http://tinyurl.com/preview.php?num=c5wrhh [Referral]
http://twitter.com/home [Referral]
http://www.google.com/reader/view/ [Referral]
PowerShell v2.0 CTP3 return codes across modules (www.google.com) [Referral]
http://www.powershellcommunity.org/Blogs/ExternalBlogs.aspx [Referral]
powershell (search.twitter.com) [Referral]
http://www.enderminh.com/netdev/ [Referral]
powershell (blogsearch.google.com) [Referral]
http://powertwitter.me/ [Referral]
powershell module variable privat (www.google.com) [Referral]
Powershell v2.0 CTP3 return codes across modules (www.google.com) [Referral]
powershell interfaces (www.google.com) [Referral]
http://www.twittergadget.com/gadget.asp?lang=en&country=us&.... [Referral]
http://huddledmasses.org/ [Referral]
http://search.twitter.com/search?ands=powershell&from=oising [Referral]
http://pipes.yahoo.com/pipes/pipe.info?_id=uAmYy9xq3BGHcV361... [Referral]
http://35.gmodules.com/ig/ifr?url=http://1o4.jp/google/modul... [Referral]
string (search.live.com) [Referral]
powershell interfaces (www.google.com) [Referral]
http://pipes.yahoo.com/pipes/pipe.info?_id=d16957ab499cae0a1... [Referral]
http://www.coderslife.com/AspNet/Articles/Summary/67709/Powe... [Referral]
http://pscx.codeplex.com/Wiki/View.aspx?title=News%20Feeds&r... [Referral]
huddled masses modules in ctp3 (www.google.com) [Referral]
powershell 2.0 visual studio (www.google.com) [Referral]
powershell visual studio (www.google.com) [Referral]
powershell IDisposable Dispose (www.google.com) [Referral]
powershell call explicitly implement interface method (www.google.com) [Referral]
powershell V2 CTP3 create CMDLet (www.google.ru) [Referral]
powershell cast to interface (www.google.com) [Referral]
sample powershell interface (www.google.fr) [Referral]
www.tinyurl.com/inpractice (search.virginmedia.com) [Referral]
powershell explicit interface (www.google.com) [Referral]
powershell V2 module "visual studio 2008" (www.google.com) [Referral]
call powershell script C# scriptblock (www.google.fr) [Referral]
ps 2.0 ctp3 what new (www.google.co.uk) [Referral]
powershell 2.0 add-type example (www.kumo.com) [Referral]
+"powershell 2.0" +"add-type" (www.google.com) [Referral]
www.tinyurl.com/inpractice (www.google.com) [Referral]
www.tinyurl.com/inpractice (www.google.com) [Referral]
powershell 2.0 and asp.net (www.google.com) [Referral]
powershell visual studio (www.google.com) [Referral]
WWW.TINYURL.COM/INPRACTICE (www.google.co.uk) [Referral]
powershell function class parameter cast .net (www.google.com) [Referral]
powershell modules variables (www.google.com) [Referral]
http://powershellcommunity.org/Blogs/ExternalBlogs/tabid/76/... [Referral]
PowerShell Visual Studio (www.google.com) [Referral]
PSObject memberinfo (www.google.be) [Referral]
http://fiskekommunerna.org/discount/kiwi-carpet-cleaning.htm... [Referral]
powershell param ValidateScript (www.google.co.uk) [Referral]
PowerShell v2 modules (www.google.com) [Referral]
powershell 2.0 ctp 3 (www.google.com) [Referral]
powershell v2 ctp3 implement provider (www.google.com) [Referral]
call .net functions powershell (www.kumo.com) [Referral]
powershell Cannot add type. (www.kumo.com) [Referral]
ValidateScript powershell (www.google.com) [Referral]
vs2008 "implement interface" "explicitly implement interface" (www.google.ca) [Referral]
"powershell 2.0" sample scripts (www.google.com) [Referral]
tinyurl.com/inpractice (search.yahoo.com) [Referral]
www.tinyurl.com/inpractice (www.google.com.au) [Referral]
powershell visual studio (www.google.com) [Referral]
powershell new-object specific interface (www.google.se) [Referral]
powershell idisposable (www.google.com) [Referral]
get powershell variable value from asp.net (www.google.com.tr) [Referral]
powershell module sample (www.google.de) [Referral]
powershell 2.0 modules (search.live.com) [Referral]
powershell scripting examples (www.google.pt) [Referral]
reflection castTo IsInterface GetInterfaceMap (www.google.ca) [Referral]
powershell module write-verbose (www.kumo.com) [Referral]
create custom Module which integrate with powershell (www.google.com) [Referral]
powershell cast .net (www.google.com) [Referral]
com interface in power shell (www.google.com) [Referral]
how to get interface members powershell (www.google.ru) [Referral]
powershell "Cannot add type" (www.google.com) [Referral]
powershell 2.0 module c# (www.kumo.com) [Referral]
implement powershell 2.0 module (www.kumo.com) [Referral]
pscustomobject get specific property (www.google.com) [Referral]
powershell 2.0 interfaces (www.google.ch) [Referral]
Call PowerShell functions from .NET Class (www.google.com) [Referral]
powershell getter and setter (www.google.nl) [Referral]
PowerShell v2.0 CTP3 getting type instead of value in string (www.google.com) [Referral]
powershell scriptproperty getter setter (www.google.nl) [Referral]
powershell 2.0 interfaces (www.google.ch) [Referral]
powershell add-type reflection (www.google.com) [Referral]
www.kumo.com preview (www.google.com) [Referral]
powershell visual studio (www.google.com) [Referral]
[ValidateScript( powershell (www.google.com) [Referral]
+powershell +interface +cast +explicit (www.google.com) [Referral]
Get-Interface powershell (www.google.com) [Referral]
powershell module sample (www.google.at) [Referral]
.net interfaces example (www.google.com) [Referral]
c# powershell scriptblock (www.google.pl) [Referral]
powershell get-interface (www.google.pl) [Referral]
powershell visual studio (www.google.com) [Referral]
powershell call property string invoke (www.google.com) [Referral]
powershell bind $_ to a script block (www.google.com) [Referral]
powershell cast (www.google.com) [Referral]
powershell custom function parameter c# (www.google.co.kr) [Referral]
c# powershell script block (www.google.com) [Referral]
explicit interface powershell (www.google.com) [Referral]
57 (www.dexterlegaspi.com) [Referral]
call powershell function .NET parameter (www.google.fr) [Referral]
http://www.netvibes.com/epupz [Referral]
How to call powershell script function in C# (www.google.co.in) [Referral]
how to call powershell functions from C# (www.google.co.in) [Referral]
powershell 2.0 functions param (www.google.at) [Referral]
powershell use module from c# (www.google.com) [Referral]
powershell interfaces (www.google.com) [Referral]
powershell get members of asp.net (www.google.com) [Referral]
powershell MemberInfo.Invoke (www.google.com) [Referral]
http://delicious.com/stejcz/interface [Referral]
powershell explicit (www.google.de) [Referral]
.NET classes in PowerShell (www.google.co.in) [Referral]
C# powershell script block (www.google.com) [Referral]
interface COM powershell (www.google.fr) [Referral]
interfacemap TargetMethods .net (www.google.com) [Referral]
powerShell call dispose (www.google.com) [Referral]
module powershell v2 c# (www.google.com) [Referral]
powershell v2 modules c# reference (www.google.com) [Referral]
How can I call explicitly implement interface method from PowerShell? (www.google.com) [Referral]
.net call powershell v2 scripts (www.google.fr) [Referral]
powershell $_.GetInterface (www.google.com) [Referral]
powershell interfaces (www.google.fr) [Referral]
Powershell 2.0 add-type -usingnamespace (www.google.com) [Referral]
powershell interface type (www.google.co.uk) [Referral]
powershell v2 ctp3 samples (www.google.co.uk) [Referral]
powershell 2.0 modules (www.bing.com) [Referral]
powershell idisposable (www.google.com) [Referral]
c# PSObject.Properties Add (www.google.de) [Referral]
powershell modules C# (www.bing.com) [Referral]
call powershell from dot net (www.google.de) [Referral]
powershell call a class (www.google.cn) [Referral]
powershell function parameter (www.google.com) [Referral]
powershell typed parameter throw (www.google.com) [Referral]
function calls in powershell 2.0 (www.google.com) [Referral]
Modules in PowerShell 2.0 (search.yahoo.com) [Referral]
Powershell ValidateScript (www.google.ru) [Referral]
custom module powershell (www.google.com) [Referral]
powershell New-Object interface methods (www.google.com) [Referral]
powershell 2.0 explicit interface casting (www.google.com) [Referral]
Powershell call .NET objects (www.bing.com) [Referral]
powershell 2.0 module (www.bing.com) [Referral]
how to call .net functions from powershell (www.bing.com) [Referral]
"implement interface" powershell (www.google.com) [Referral]
"create cmdlet" (us.altavista.com) [Referral]
string (www.bing.com) [Referral]
add-type powershell (www.bing.com) [Referral]
pipe bind script powershell (www.bing.com) [Referral]
www.tinyurl.com/inpractice (uk.search.yahoo.com) [Referral]
powershell 2.0 classes (www.google.com) [Referral]
using dot.net class in powershell (www.bing.com) [Referral]
powershell how to call .net objects (www.bing.com) [Referral]
powershell validatescript (www.google.com) [Referral]
powershell add-type examples (www.google.com) [Referral]
powershell get com object interface (www.google.com) [Referral]
powershell reference pscustomobject (www.google.com) [Referral]
www.tinyurl.com/inpractice (uk.search.yahoo.com) [Referral]
add-type powershell example (www.bing.com) [Referral]
www.tinyurl.com/inpractice (uk.search.yahoo.com) [Referral]
c# + convert PSCustomObject (www.google.com) [Referral]
CTP3 script samples (www.bing.com) [Referral]
powershell-v2.0 c# (www.google.ru) [Referral]
http://pscx.codeplex.com/Wiki/View.aspx?title=News%20Feeds [Referral]
www.tinyurl.com/inpractice (uk.search.yahoo.com) [Referral]
POWERSHELL 2.0 (tw.search.yahoo.com) [Referral]
c# calling powershell v2 (sg.search.yahoo.com) [Referral]
export c# interfaces to powershell (www.google.com) [Referral]
powershell Validatescript (www.google.com) [Referral]
PowerShell explicit interface reflection (www.google.com) [Referral]
http://www.outertech.com/ [Referral]
http://www.baidu.com/s?ie=gb2312&bs=%D3%C3WCF%BF%AA%B7%A2Web... [Referral]
"implement interface" "explicitly implement interface" (www.google.cn) [Referral]
powershell 2 (tw.search.yahoo.com) [Referral]
Add-Type "UsingNamespace" (www.google.com.hk) [Referral]
ValidateScript powershell (www.google.com) [Referral]
powershell modules asp.net (www.google.com) [Referral]
powershell "return codes" (www.google.com) [Referral]
.net interface powershell (www.google.com) [Referral]
powershell module c# (www.google.co.uk) [Referral]
powershell ValidateScript (www.google.com) [Referral]
"convert PSCustomObject" (www.google.de) [Referral]
powershell modules private functions (www.bing.com) [Referral]
Powershell 2.0 cmdlet parameter C# (search.yahoo.com) [Referral]
powershell 2.0 from c# (www.google.com) [Referral]
powershell validatescript (www.google.se) [Referral]
powershell 2.0 samples (www.google.com.sg) [Referral]
.net powershell interfaces (www.google.com.ua) [Referral]
http://yandex.ua/yandsearch?text=PowerShell+2.0+CTP3.&tld=ua... [Referral]
calling an interface methond in powershell (www.bing.com) [Referral]
tinyurl.com/inpractice (www.google.co.uk) [Referral]
call powershell from visual studio (www.google.com) [Referral]
http://tinyurl.com/inpractice (www.google.co.uk) [Referral]
powershell cast type interface (www.bing.com) [Referral]
http://127.0.0.1/iframe?url=http://tinyurl.com/c5wrhh [Referral]
powershell explicit bind (www.google.co.uk) [Referral]
tinyurl.com/inpractice (www.google.de) [Referral]
PowerShell IDisposable (www.google.com) [Referral]
www.google.co.uk move on practic test (www.bing.com) [Referral]
"powershell 2.0" cmdlets visual studio (www.bing.com) [Referral]
http://pscx.codeplex.com/wikipage?title=News%20Feeds&Project... [Referral]
powershell return values invoke modules (www.bing.com) [Referral]
powershell get-member interface methods (www.bing.com) [Referral]
access interface methods powershell 2.0 com (www.bing.com) [Referral]
http://tinyurl.com/inpractice (www.google.com.au) [Referral]
powershell validatescript (www.google.com) [Referral]
powershell explicit interface (www.bing.com) [Referral]
"powershell 2" explicit interface (www.bing.com) [Referral]
http://twitter.com/ [Referral]
powershell validatescript (www.google.co.nz) [Referral]
"getter" "setter" powershell (www.google.co.jp) [Referral]
powershell 2.0 module (www.bing.com) [Referral]
powershell create module (www.bing.com) [Referral]
powershell v2.0 script examples (www.bing.com) [Referral]
tinyurl.com/inpractice. (uk.search.yahoo.com) [Referral]
http:/tinyurl.com/inpractice. (uk.search.yahoo.com) [Referral]
c# powershell add module (www.google.com) [Referral]
powershell validatescript (www.google.com) [Referral]
visual studio create a powershell module (www.bing.com) [Referral]
powershell add-type UsingNamespace (www.google.com) [Referral]
powershell module return value (www.bing.com) [Referral]
powershell modules c# (www.google.lu) [Referral]
powershell add-type examples (www.bing.com) [Referral]
Creating a powershell module + C# (www.google.co.in) [Referral]
PowerShell, .NET (tw.search.yahoo.com) [Referral]
powershell cast interface (www.google.co.nz) [Referral]
http://www.baidu.com/s?wd=powershell+add-type [Referral]
powershell module .net (www.bing.com) [Referral]
powershell sharepoint pipe binding sample (www.bing.com) [Referral]
tinyurl.com/inpractice (www.google.co.uk) [Referral]
http://tinyurl.com/inpractice (www.google.co.uk) [Referral]
create powershell module (www.bing.com) [Referral]
pipe bind powershell (www.google.co.uk) [Referral]
implement interface powershell (www.bing.com) [Referral]
PowerShell ValidateScript (www.google.com) [Referral]
http//tinyurl.com/inpractice (www.google.co.uk) [Referral]
Add-Type : Cannot add type. (www.bing.com) [Referral]
powershell add 2 (www.bing.com) [Referral]
custom functions in powershell 2.0 (www.google.com) [Referral]
powershell interface instance (www.google.com) [Referral]
pscustomobject + add node property (www.google.be) [Referral]
powershell get-member interface (www.google.de) [Referral]
public class Add-Type -TypeDefinition powershell (www.google.fr) [Referral]
powershell script New-Module example (www.google.co.il) [Referral]
cache:tc-kcUd_WOsJ:www.nivot.org/CategoryView,category,PowerShell.aspx powershell com interface getInterface (74.125.47.132) [Referral]
powershell 2.0 Scripting Dot Net (www.google.ch) [Referral]
powershell 2.0 modules (www.google.com) [Referral]
powershell 2.0 object example (www.google.de) [Referral]
powershell add-type com interface (www.google.com) [Referral]
cannot cast type same type Powershell (www.bing.com) [Referral]
powershell NewBoundScriptBlock (www.google.com) [Referral]
powershell add-type example (www.google.de) [Referral]
powershell com+ get interface method (www.google.com) [Referral]
interfaces powershell (www.google.com.au) [Referral]
powershell "param" validatescript (www.google.at) [Referral]
ValidateScript powershell (www.google.de) [Referral]
calling powershell 2.0 cmdlets from .net (www.google.com) [Referral]
powershell TinyUrl function (www.google.com) [Referral]
http://subtextproject.com/Services/default.htm [Referral]
return value from powershell module (www.google.com) [Referral]
return variable from powershell module (www.google.com) [Referral]
powershell PSCustomObject cast (www.google.com) [Referral]
http://www.netvibes.com/cheapautoinsurancequote [Referral]
http://tinyurl.com/inpractice (www.google.com) [Referral]
ValidateScript powershell (www.bing.com) [Referral]
add yahoo pipes feed to gmodules (www.google.ca) [Referral]
http://www.baidu.com/s?tn=pubgen_pg&bs=www.kumn.com&f=8&wd=w... [Referral]
how to use powershell 2.0 in visual studio 2008 (www.google.com) [Referral]
http://www.baidu.com/s?tn=snxs_006_pg&bs=www.kugo.com&f=8&wd... [Referral]
http://www.baidu.com/baidu?word=www.kumo.com&tn=leizhen [Referral]
http://www.baidu.com/s?tn=chinacnc_nm_pg&bs=www.kuwo.com&f=8... [Referral]
http://www.baidu.com/s?wd=www.kumo.com&ch=&tn=index88_pg&bar... [Referral]
http://www.baidu.com/s?wd=WWW.KUMO.COM&ch=&tn=3man_pg&bar= [Referral]
http://www.baidu.com/s?ie=utf-8&tn=chinacnc_tj_pg&wd=www.kum... [Referral]
http://www.baidu.com/s?tn=wuxian133_pg&bs=www.kuno.com&f=8&w... [Referral]
http://www.baidu.com/s?wd=www.kumo.com&word=www.kumo.com&tn=... [Referral]
http://www.baidu.com/s?tn=leizhen&bs=www.kumo.com&f=8&wd=www... [Referral]
http://www.baidu.com/s?wd=www.kumo.com&ch=&tn=snxs_006_pg&ba... [Referral]
http://www.baidu.com/s?tn=request_4_pg&bs=www.kumo.com&f=8&w... [Referral]
http://www.baidu.com/s?cl=3&wd=www%2Ekumo%2Ecom&fr=vid1000 [Referral]
http://www.baidu.com/s?wd=www.kumo.com [Referral]
private function modules powershell RTM (www.google.ca) [Referral]
http://www.baidu.com/s?tn=site888_pg&lm=-1&word=www.kumo.com [Referral]
http://www.baidu.com/s?wd=www.kumo.com&ch=&tn=request_pg&bar... [Referral]
http;//www yandex.ua. (www.bing.com) [Referral]
http://www.baidu.com/s?tn=360se_dg&bs=kumo&f=8&wd=www.kumo.c... [Referral]
http://www.baidu.com/s?ie=utf-8&tn=licenseonline_pg&wd=www.k... [Referral]
http://www.baidu.com/s?wd=WWW.KUMO.COM&ch=&tn=corty_pg&bar= [Referral]
http://www.baidu.com/s?tn=kugoo2007_pg&bs=www.kumo.com&f=8&w... [Referral]
http://www.baidu.com/s?ie=utf-8&tn=chinacnc_sx_pg&wd=www.kum... [Referral]
http://www.baidu.com/s?tn=webxunlei_1_adr&bs=www.KUno.com&f=... [Referral]
http://www.move.on.practictest.org.uk/asp (www.google.co.uk) [Referral]
http://www.baidu.com/s?tn=site888_pg&lm=-1&word=Www.KumO.Com [Referral]
http://www.netvibes.com/lipitormedication [Referral]
http://www.baidu.com/s?wd=www.kumo.com&tn=shnetzone_pg&abar=... [Referral]
create powershell module in visual studio (www.bing.com) [Referral]
powershell reflection pscustomobject getproperties (www.google.es) [Referral]
powershell module return value (www.google.com) [Referral]
powershell 2.0 .net classes (www.google.com) [Referral]
http://www.baidu.com/s?word=www.kumo.com&tn=17gameyes&cl=3 [Referral]
powershell script module examples (www.google.co.in) [Referral]
private function powershell (www.google.co.uk) [Referral]
powershell module scope (www.bing.com) [Referral]
"powershell v2.0" +"script-block" +examples (www.google.co.uk) [Referral]
powershell 2.0 module (www.bing.com) [Referral]
PowerShell V2.0 CTP3 (www.google.com) [Referral]
use interface in powershell (www.google.cz) [Referral]
Windows PowerShell(TM) V2 CTP3 (www.bing.com) [Referral]
www.move-on.org/practictests (www.google.com) [Referral]
interface powershell (www.google.com) [Referral]
PowerShell(TM) V2 (CTP3) sharepoint 2010 (www.bing.com) [Referral]
http://vmtoolkit.com/members/CialisRezeptfrei.aspx [Referral]
powershell module "C#" (www.google.com) [Referral]
powershell 2.0 module samples (www.google.at) [Referral]
http://web.gougou.com/search?search=ctp3&page=1&id=10000016&... [Referral]
http://www.kwick.de/CialisBestellen [Referral]
windows server install Windows PowerShell(TM) V2 (CTP3) (www.google.com) [Referral]
pscustomobject powershell keys (www.google.com) [Referral]
interfaces powershell (www.google.de) [Referral]
http:// tinyurl.com/inpractice (www.google.pl) [Referral]
Powershell convert PSCustomObject to a number (www.google.com) [Referral]
Windows PowerShell(TM) V2 (CTP3) (www.google.de) [Referral]
powershell add-type (www.bing.com) [Referral]
http://www.baidu.com/s?wd=www.kugo.com&ch=&tn=andylau56789_p... [Referral]
http://www.baidu.com/s?tn=kungho_pg&bs=www.kugo.com&f=8&wd=w... [Referral]
http://www.baidu.com/s?wd=www.kuno.com&word=www.kuno.com&tn=... [Referral]
powershell module "private function" (www.google.nl) [Referral]
http://www.baidu.com/s?wd=www.kuwo.com&pn=10 [Referral]
http://www.baidu.com/s?bs=www.kuno.com&tn=chinacnc_sd_pg&f=8... [Referral]
http://www.baidu.com/s?wd=http%3A%2F%2Fwww.kuno.com%2F&=%B0%... [Referral]
net use PowerShell 2.0 (www.google.ru) [Referral]
implement interface in powershell (www.google.com) [Referral]
C# reflection to access members of PSObject (www.bing.com) [Referral]
powershell 2.0 classes (www.google.com.ua) [Referral]
cast type to interface powershell (www.google.com) [Referral]
http://www.baidu.com/s?tn=coopen123_dg&word=http%3A%2F%2Fwww... [Referral]
http://www.baidu.com/s?wd=http%3A%2F%2Fwww.baidu.com%2Fs%3Ft... [Referral]
powershell reflection (www.bing.com) [Referral]
http://www.baidu.com/s?tn=pubwin_4_pg&bs=www.km.com&f=8&wd=w... [Referral]
powershell using verbose in custom module (www.google.com) [Referral]
develop a powershell module in C# (www.google.de) [Referral]
"Cannot add type" add-type (www.bing.com) [Referral]
type adaptation in powershell (www.google.ca) [Referral]
powershell 2.0 vs2008 (www.google.com) [Referral]
PowerShell(TM) V2 (CTP3) sharepoint 2010 (cn.bing.com) [Referral]
get-interface powershell (www.google.ca) [Referral]
powershell validatescript (www.google.com) [Referral]
powershell 2.0 net (www.bing.com) [Referral]
powershell cast idisposable (www.google.com) [Referral]
ScriptBlock cast powershell (www.bing.com) [Referral]
http://www.baidu.com/s?tn=gwyuan_dg&word=http%3A%2F%2Fwww%2E... [Referral]
testing powershell modules (www.bing.com) [Referral]
c# powershell 2.0 example (www.google.com) [Referral]
http://www.netvibes.com/abilify [Referral]
invoke powershell asp.net (www.google.be) [Referral]
http://www.baidu.com/s?kw=&sc=&cl=3&tn=bimony_pg&ie=utf-8&ct... [Referral]
http://pscx.codeplex.com/wikipage?title=News%20Feeds&version... [Referral]
http://www.baidu.com/s?wd=tn%20snxs%20006%20pg&rsp=2&oq=www.... [Referral]
windows 7 impossible installer powershell 2.0 (www.google.fr) [Referral]
http://www.baidu.com/s?wd=tn%20snxs%20006%20pg&rsp=0&oq=mobi... [Referral]
http://www.baidu.com/s?wd=tn%20snxs%20006%20pg&rsp=1&oq=inde... [Referral]
http://www.baidu.com/s?tn=utf7_dg&wd=tn=wuxian133_pg&wd=%E5%... [Referral]
http://github.com/aderall [Referral]
c# best way to tiny url module (www.google.co.in) [Referral]
http://github.com/zelnorm [Referral]
powershell get interface name (www.google.bg) [Referral]
powershell cast to instance (www.google.com) [Referral]
WWW.KUNO RU (www.google.it) [Referral]
http://www.baidu.com/s?tn=kugoo2007_cb&bar=8&word=http://www... [Referral]
http://github.com/actonel [Referral]
powershell casting as interface (www.google.com) [Referral]
powershell specific com interface (www.google.com) [Referral]
powershell modules private functions (www.google.ru) [Referral]
powershell modules in C# (www.google.com) [Referral]
http://www.baidu.com/s?tn=gwyuan_dg&bs=%CE%C0%D4%A1%BD%E0%BE... [Referral]
net use in powershell (www.bing.com) [Referral]
create "scriptblock" "visual studio 2008" (www.bing.com) [Referral]
+powershell +interface +implement (www.google.com) [Referral]
+"add-type" +powershell +interface +implement (www.google.com) [Referral]
casting PSCustomObject (www.bing.com) [Referral]
powershell implement interface (www.google.de) [Referral]
net use powershell (www.bing.com) [Referral]
powershell using com interfaces (www.google.com) [Referral]
powershell 2.0scripting (www.google.com) [Referral]
vs2008 implements interface (www.google.com) [Referral]
powershell private functions (www.google.de) [Referral]
http://www.baidu.com/s?bs=powershell+%CA%FD%D7%E9&f=8&wd=pow... [Referral]
remoting powershell scriptblock in c# (www.google.ca) [Referral]
powershell ctp3 (www.google.com) [Referral]
http://www.baidu.com/s?bs=75tn%3Dlicenseonline_pg&f=8&wd=tn=... [Referral]
http://www.baidu.com/s?tn=rainsoft1_dg&bs=http+www.kugo.com.... [Referral]
netinterface powershell (www.google.de) [Referral]
implement an interface powershell (www.google.com) [Referral]
powershell pipebind array (www.google.com) [Referral]
powershell module adding custom types (www.google.co.nz) [Referral]
powershell module private scope (www.google.fr) [Referral]
http://www.baidu.com/s?wd=km+http://www.baidu.com/s%3Ftn%3du... [Referral]
wwwkumo.co.uk (www.google.com) [Referral]
powershell v2 and sharepoint 2007 "add-type" (www.google.fi) [Referral]
powershell dynamic modules c# (www.google.com) [Referral]
"Visual Studio 2008" add-in "PowerShell 2.0" (www.google.com) [Referral]
powershell 2.0 module .net 4 (www.google.fr) [Referral]
"compact framework" GetInterfaces (www.google.ca) [Referral]
powershell .net 2.0 add-type (www.google.com) [Referral]
+windows +powershell +module +"c#" (www.google.com) [Referral]
class dans powershell 2.0 (www.google.com) [Referral]
PowerShell 2.0 CTP3 (www.google.pt) [Referral]
implement interface in powershell (www.google.com) [Referral]
powershell com objects dual interfaces (www.google.ru) [Referral]
powershell sample modules (www.bing.com) [Referral]
how to call powershell from asp (www.google.com) [Referral]
how to implement modules in powershell (www.google.com) [Referral]
google ruwww home casting net (www.google.com.ua) [Referral]
how to write powershell 2.0 modules (www.google.fr) [Referral]
how to create class using powershell script module (www.google.ch) [Referral]
www.move-on.practictest.uk.org (www.google.lt) [Referral]
powershell use dynamic module (www.google.ru) [Referral]
powershell get interfaces (www.google.it) [Referral]
http://www.baidu.com/s?wd=www.kugo.com&f=12&oq=www.kugw.com%... [Referral]
PS 2.0CTP3 (www.google.com) [Referral]
getinterface "compact framework" getinterfaces (www.google.fi) [Referral]
powershell dual interface automation com (www.bing.com) [Referral]
powershell explicit Idispose (www.bing.com) [Referral]
cast PSCustomObject (www.google.com) [Referral]
http://114search1.118114.cn/search_web.html?id=566&kw=www.go... [Referral]
GetInterfaceMap google (www.google.es) [Referral]
c# powershell how to get the type of an interface (www.google.com) [Referral]
powershell 2.0 class (www.google.pl) [Referral]
powershell get interface name (www.google.com) [Referral]
powershell use dotnet interface (www.google.fr) [Referral]
powershell validatescript (www.bing.com) [Referral]
http://www.baidu.com/s?bs=msdn+sharepoint+class&f=8&wd=power... [Referral]
POWERSHELL EXAMPLES PRACTICES (www.google.es) [Referral]
powershell $_.* $a (www.google.sk) [Referral]
powershell "MemberInfo.Invoke" (www.google.com) [Referral]
move on practice testwww.google.co.uk (www.google.co.uk) [Referral]
powershell get-interface (www.bing.com) [Referral]
reflection PSCustomObject (www.google.com) [Referral]
http://www.google.co.uk/webhp?sourceid=navclient&ie=UTF-8 [Referral]
http://www.baidu.com/s?wd=+http%3A%2F%2Fwww.baidu.com%2Fs%3F... [Referral]
powershell download windows 7 ctp3 (www.google.com) [Referral]
http://www.google.com/ [Referral]
powershell cast net objects (www.google.co.uk) [Referral]
powershell modules visual studio 2008 (www.google.com) [Referral]
inpractice.tinyurl (www.google.co.uk) [Referral]
powershell PSObject implement interface (www.google.fr) [Referral]
http://www.baidu.com/s?tn=site888_2_pg&bs=www.ku9w.com&f=8&w... [Referral]
powershell in practice (www.google.com) [Referral]
powershell cast interface (www.google.com) [Referral]
psscriptproperty getter setter (www.google.com) [Referral]
add-type example powershell (www.google.com) [Referral]
http://www.baidu.com/s?tn=index88_pg&bs=www.kuqw.com&f=8&wd=... [Referral]
http://www.baidu.com/s?wd=pg%20pscx&rsp=9&oq=PG%B0%E6%B5%C4%... [Referral]
http://www.baidu.com/baidu?tn=darkzht_pg&ie=utf-8&stype=page... [Referral]
powershell explicit casting (www.bing.com) [Referral]
idisposable powershell 2 (www.bing.com) [Referral]
powershell sample call .NET (hk.search.yahoo.com) [Referral]
powershell 2.0 ctp3 (search.yahoo.com) [Referral]
how to implement a com interface in powershell (www.google.com) [Referral]
http://www.celendz.biz/mercedes-oem-carpeted-floor-mats-san-... [Referral]
Cast to type in powershell (www.bing.com) [Referral]
http://www.baidu.com/baidu?wd=http%3A%2F%2Fwww.kuqw.com&tn=h... [Referral]
POwerShell Add-Type -CompilerParameters (www.bing.com) [Referral]
http://www.baidu.com/s?bs=www.ku9w.com&f=8&wd=www.kuqw.com [Referral]
http://www.baidu.com/s?wd=www.ku9w.com [Referral]
http://www.baidu.com/s?tn=ylmf_4_pg&ch=4&bs=www.kuq.com&f=8&... [Referral]
validatescript powershell (www.google.com) [Referral]
http://www.baidu.com/s?wd=www.kuqw.com&word=www.kuqw.com&tn=... [Referral]
www.kugo.com (www.google.com.hk) [Referral]
powershell interfaces (www.google.com) [Referral]
www.kuno.com (www.bing.com) [Referral]
9a769a4586cc47a840a6cc655a08 (cache.baidu.com) [Referral]
powershell wmi setter "get-member" property (www.bing.com) [Referral]
http://www.baidu.com/s?tn=site888_pg&bs=www.kugw.con&f=8&wd=... [Referral]
powershell 2.0 pipe to script (www.google.pl) [Referral]
powershell add-Module (www.google.com) [Referral]
Powershell 2.0 CTP3 (www.google.com.au) [Referral]
PowerShell .NET interface (www.google.com) [Referral]
ku9w (search.yahoo.com) [Referral]
powershell custom module description (www.google.com) [Referral]
www.kuqw.com (www.google.com.hk) [Referral]
http://www.baidu.com/s?wd=http%3A%2F%2Fwww.baidu.com%2Fs%3Fw... [Referral]
www.move.on.org.uk/practictests (www.bing.com) [Referral]
www.kuqw.com (www.google.com.hk) [Referral]
http://www.baidu.com/s?bs=komn.cc&f=8&wd=www.kumn [Referral]
http://www.netvibes.com/zetia [Referral]
http://www.baidu.com/s?wd=www.kuqw.com&ch=1&tn=utf8kb_oem_dg... [Referral]
powershell cast to interface (www.google.com) [Referral]
http://www.baidu.com/s?wd=www.kugw.com&ch=&tn=site888_pg&bar... [Referral]
powershell validatescript (www.google.com) [Referral]
powershell casting to com interface (www.google.com) [Referral]
C# PowerShell 2.0 (www.bing.com) [Referral]
download Windows PowerShell(TM) V2 (CTP3) (www.google.cl) [Referral]
http://www.baidu.com/s?wd=WWW.KU9W.COM&se=360se_2_dg [Referral]
http://www.baidu.com/s?wd=www.ku9w.com&ch=&tn=&bar= [Referral]
powershell .net casting (www.google.com) [Referral]
http://www.baidu.com/s?wd=QQ [Referral]
powershell com object cast to interface (www.bing.com) [Referral]
http://www.baidu.com/s?bs=www.kugw.com&tn=sitehao123&f=8&wd=... [Referral]
http://www.baidu.com/s?wd=KUGW.COM&ie=utf-8&tn=ylmf [Referral]
"private function" AND "powershell" (www.google.at) [Referral]
powershell "private function" (www.google.com) [Referral]
http://www.netvibes.com/actonel [Referral]
powershell 2.0 c# (www.bing.com) [Referral]
powershell return cast type (www.bing.com) [Referral]
Get-Member c# powershell (www.google.co.uk) [Referral]
powershell create c# class getter setter (search.yahoo.com) [Referral]
powershell private function (www.google.co.nz) [Referral]
http://www.google.com.br/ [Referral]
powershell custom module (www.google.com) [Referral]
write powershell module c# (www.google.com) [Referral]
Comments are closed.