O que posso fazer com C # e PowerShell?
-
09-09-2019 - |
Pergunta
Eu tenho uma compreensão decente de C # e uma compreensão muito básica de PowerShell. Estou usando o Windows PowerShell CTP 3, que tem sido muito divertido. Mas eu quero ir além de escrever os scripts / funções. Existe alguma coisa legal para fazer com C #?
Solução
Eu acho que a coisa mais interessante que você pode fazer com C # e PowerShell é construir cmdlet do. Estes são essencialmente plugins para PowerShell que são escritos em código gerenciado e agir como funções normais. Eles têm um par verbo-substantivo e muitas das funções que você já usa são realmente cmdlets sob o capô.
Outras dicas
No nível mais alto você tem duas opções diferentes que você pode de um C # anfitrião do programa PowerShell e executar comandos PowerShell via espaços de execução e dutos.
Ou você pode a partir de dentro PowerShell executar código C #. Isso pode ser feito de duas maneiras. Com um snap-in PowerShell, uma DLL compilada que fornece cmdlets PowerShell e provedores de navegação, ou através do novo cmdlet Add-Type , que permite dinamicamente importação C #, VB, F # código. Desde a ajuda
$source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
Add-Type -TypeDefinition $source
[BasicTest]::Add(4, 3)
$basicTestObject = New-Object BasicTest
$basicTestObject.Multiply(5, 2)
Você pode olhá-lo de duas maneiras:
- Como você pode alavancar PowerShell dentro do seu programa C #
- Como você pode alavancar programação C # dentro PowerShell.
Até certo ponto, eles são bastante diferentes perguntas com respostas diferentes.
De C # você pode aproveitar o motor PowerShell, espaços de execução, encanamentos de, etc. Como é feito com Exchante, você pode usar C # para fazer todas as coisas GUI, em seguida, chamar um PowerShell cmdlet para fazer todas as coisas difíceis. Esta opção é apropriada se você pode encontrar cmdlets PowerShell ou scripts para alavancagem.
De PowerShell, você pode usar C # para expandir o que você pode fazer em PowerShell. Você pode criar cmdlts e fornecedores para permitir que outros dados de aplicativo de acesso. Ou você pode apenas criar objetos que podem ser usados ??dentro de um script PowerShell. Esta opção é a maneira como você ajudar a abrir o seu aplicativo a ser gerida de uma forma mais automatizada.
Então, dependendo do que você está procurando fazer, você tem opções.
Scott Hanselman aka Hanselminutes tem vários podcasts sobre PowerShell, os cmdlets, C # e muito mais. É o melhor se você quiser saber o que é, como funciona e muito mais. Faça uma pesquisa em seu site para agarrar o podcast.
podcasts Lista de PS relacionados em seu local (em ordem cronológica inversa):
# 190: Estado de Powershell / Lee Holmes & Jason Shirk
# 162: PowerShell 2.0
# 49: Powershell / Bruce Payette
# 36: Jeffrey Snover, Powershell arquiteto
# 24: Windows PowerShell (MÔNADA), Parte II