Что я могу сделать с C # и Powershell? - PullRequest
45 голосов
/ 12 апреля 2009

У меня есть приличное понимание C # и очень простое понимание powershell. Я использую Windows PowerShell CTP 3, что было очень весело. Но я хочу выйти за рамки написания скриптов / функций. Есть ли что-нибудь интересное в C #?

Ответы [ 5 ]

60 голосов
/ 12 апреля 2009

На высшем уровне у вас есть две разные опции. Вы можете использовать PowerShell для хоста программы на C # и выполнять команды PowerShell через RunSpaces и конвейеры.

Или вы можете изнутри PowerShell запустить код C #. Это можно сделать двумя способами. С помощью оснастки PowerShell, скомпилированной библиотеки DLL, которая предоставляет командлеты PowerShell и провайдеров навигации, или с помощью нового командлета Add-Type , который позволяет динамически импортировать код C #, VB, F #. С помощью

$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)
34 голосов
/ 12 апреля 2009

Я думаю, что самое интересное, что вы можете сделать с помощью C # и PowerShell, - это создать CmdLet. По сути, это плагины для PowerShell, которые написаны в управляемом коде и действуют как обычные функции. У них есть пара глагол-существительное, и многие из функций, которые вы уже используете, фактически являются командлетами под капотом.

http://msdn.microsoft.com/en-us/magazine/cc163293.aspx

8 голосов
/ 12 апреля 2009

Ответ: «Это зависит». Вы можете делать разные вещи с помощью c # (создавать окна, веб-клиенты и мобильные клиенты).

Вы можете вызывать сценарии powershell из C #. Посмотрите на этом сайте ==> ссылка

Вы даже можете преобразовать свой код C # в powershell ==> ссылка

5 голосов
/ 22 мая 2009

Вы можете посмотреть на это одним из двух способов:

  1. Как вы можете использовать PowerShell внутри вашей программы на C #
  2. Как вы можете использовать программирование на C # внутри PowerShell.

В какой-то степени это совершенно разные вопросы с разными ответами.

Из C # вы можете использовать движок PowerShell, пространства выполнения, конвейеры и т. Д. Как и в случае с Exchante, вы можете использовать C # для выполнения всего графического интерфейса, а затем вызывать командлет PowerShell для выполнения всех сложных задач. Этот вариант подходит, если вы можете найти командлеты или скрипты PowerShell для использования.

В PowerShell вы используете C # для расширения возможностей PowerShell. Вы можете создавать командлеты и поставщиков, чтобы другие могли получать доступ к данным приложения. Или вы можете просто создать объекты, которые можно использовать в скрипте PowerShell. Эта опция - способ, с помощью которого вы можете открыть свое приложение для более автоматизированного управления.

Так что, в зависимости от того, что вы хотите сделать, у вас есть варианты.

2 голосов
/ 22 мая 2009

Скотт Хансельман aka Hanselminutes имеет несколько подкастов о Powershell, CmdLets, C # и многом другом. Лучше всего, если вы хотите узнать, что это такое, как это работает и многое другое. Выполните поиск на его веб-сайте, чтобы получить подкаст.

Список связанных с PS подкастов на его сайте (в обратном хронологическом порядке):

# 190: Государство Пауэршелл / Ли Холмс и Джейсон Ширк
# 162: Powershell 2.0
# 49: Powershell / Bruce Payette
# 36: Джеффри Сновер, архитектор Powershell
# 24: Windows Powershell (MONAD), часть II

...