Я чрезвычайно новичок в PowerShell, но у меня много опыта C#. Я написал оболочку API в C#, и я хотел бы показать ее как командлеты PowerShell. Типичный поток в C# является довольно стандартным:Powershell Create Session Object
var client = new MyClient("username", "password");
var endpointData = client.GetSomeEndpointData();
Вопрос заключается в том, что такое правильный поток чего-то подобного в PowerShell и как сохранить его только для этой сессии. Я думаю, что это должно выглядеть примерно так.
Import-Module MyClient.dll
New-MyClient "username" "password"
Get-SomeEndpointData
Так что мои вопросы
- Является ли это «правильный» поток что-то вроде этого
- Что это выглядит в C# код для создания командлетов, в частности
- как должен быть сохранен экземпляр
MyClient
для текущего сеанса PowerShell - Как следуетЭкземплярможно получить в других командных командах, для которых требуется этот экземпляр?
- как должен быть сохранен экземпляр
Чтобы было ясно, мне не нужен сам код (примеры было бы неплохо), но мой Google-фу может быть просто не хватает сегодня. Документация MSDN (или эквивалент) будет достаточной.
Объем 'MyClient' достаточно похож на ваш фон в' C# ', что я не предвижу бежишь в каких-либо проблем там в рамках существующей сессии. Если вы хотите, чтобы один и тот же экземпляр «MyClient» переносился на другие сценарии и т. Д., Зайдите в [Dot Sourcing] (http://ss64.com/ps/source.html). – gravity
Имеет ли смысл подключаться к разным конечным точкам или использовать разные учетные данные в одном сеансе? Если это так, я бы подумал, что командлет New-MyClient вернет экземпляр «MyClient» (или подходящую обертку), на который пользователь будет вызывать методы. В противном случае вы обычно видите, что эти «окружающие» объекты хранятся в статических полях в некотором классе модуля. Командлеты в модуле просто ссылаются на статическое поле, чтобы получить все, что им нужно. –