Hlavní navigace

Názor ke zprávičce Ballmer oznámením odchodu vydělal na akciích miliardu dolarů od Lael Ophir - Z PowerShellu i ostatních prostředí můžete používat objekty...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 2. 9. 2013 2:44

    Lael Ophir (neregistrovaný) ---.145.broadband14.iol.cz

    Z PowerShellu i ostatních prostředí můžete používat objekty .NETu stejně jako COM.

    Velké aplikace často fungují jako COM objekty, ale to neznamená, že nemůžete používat menší COM nebo .NET objekty. Nakonec všechny cmdlety v PowerShellu prostě vrátí objekty, případně provedou nějakou metodu - buď v .NETu, nebo to propadne na nějaké Win32 API.
    Příklad:

    Get-Process | Where-Object {$_.MainWindowTitle -ne ""} | Select-Object MainWindowTitle

    Tohle vám vrátí seznam popisů hlavních oken všech běžících aplikací (pokud okno má popis). Nespouští se u toho žádná utilita, nic se neparsuje - propadne to na .NETí API System.Diagnos­tics.Process.Get­Processes(), to vrátí pole objektů typu Process, a Process má MainWindowTitle jako jednu z vlastností. Navíc ty cmdlety mají aliasy, takže to může vypadat i takhle:
    gps | ? {$_.MainWindowTitle -ne ""} | select MainWindowTitle

    Chcete třeba vyrobit nové okno? Natáhněte si .NET namespace System.Window­s.Forms, a vytvořte nové okno. Můžete do něj klidně přidat prvky.
    [reflection.as­sembly]::load­withpartialna­me("System.Win­dows.Forms")
    $form1 = New-Object System.Window­s.Forms.Form
    $textbox=New-Object System.Window­s.Forms.TextBox
    $form1.Control­s.Add($textbox)
    $form1.ShowDialog()

    Podobně můžete použít jakoukoliv .NET knihovnu a jakýkoliv COM objekt. Plus samozřejmě všechno co se dá dělat na commandline, včetně parsování, pokud na to máte chuť.

    Už je jasnější, v čem spočívá upgrade proti tradičním unixovým shellům?