В настоящее время я пытаюсь создать свой первый PowerShell Snapin. Я следовал этому руководству: How to create a PowerShell Snapin, и все работает нормально, пока я не попытаюсь вызвать свой пользовательский командлет. Кроме того, я добавил «Post Build Event» для регистрации сборки.PowerShell Snapin Cmdlet CommandNotFoundException
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe" $(TargetPath)
Затем я добавил и модуля управления работал как шарм:
Add-PSSnapin CustomSrv.Commands
Путь к сборке для справки System.Automation:
C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll
Как моей целевой платформы я выбрал x86, и я также выполняю все в x86 PowerShell. Платформа устанавливается на «Активный (Any CPU)»
Это мой Командлет код:
namespace CustomSrv.Commands
{
[Cmdlet(VerbsCommunications.Connect, "CustomSrv")]
public class TestCmdlet1 : Cmdlet
{
protected override void BeginProcessing()
{
WriteObject("BeginProcessing() method - Execution has begun");
}
protected override void ProcessRecord()
{
WriteObject("ProcessRecord() method - Executing the main code");
}
protected override void EndProcessing()
{
WriteObject("EndProcessing() method - Finalizing the execution");
}
}
}
Это ошибка, я получаю, когда я пытаюсь вызвать команду:
PS C:\WINDOWS\system32> Connect-CustomSrv
Connect-CustomSrv: The term 'Connect-CustomSrv' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At line:1 char:1
+ Connect-CustomSrv
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Connect-CustomSrv:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Что я делаю неправильно, есть ли что-то неправильное в отношении платформы таргетинга (x86)?
Вы должны знать, что оснастки устарели (и были с тех пор, как v2); вы должны создавать модули вместо этого. И да, вы [можете создавать двоичные модули] (http://csharpening.net/?p=738) – alroc
Что такое версия powershell, которую вы используете? Сделайте $ PSVersionTable, чтобы убедиться. И какая версия .Net вы используете для своей сборки? И, как говорит алкрок. Snapins устарели, посмотрите модули. У вас могут быть чистые модули PowerShell, поэтому вам даже не нужна Visual Studio или не заботитесь о целевых объектах, а что нет. –
Поскольку я намереваюсь использовать Snapin с Pash, который поддерживает Snapins, к сожалению, переход на модули не является для меня вариантом ... Я использую .NET Version 3.5 и PowerShell Version 4. –