3

目前我正在尝试创建我的第一个 PowerShell 管理单元。我遵循了本教程:如何创建 PowerShell 管理单元并且一切正常,直到我尝试调用我的自定义 cmdlet。此外,我添加了一个“构建后事件”来注册程序集。

"C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe" $(TargetPath)

之后我添加了 Snapin,它就像一个魅力:

Add-PSSnapin CustomSrv.Commands

System.Automation 参考的程序集路径:

C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll

作为我的目标平台,我选择了 x86,并且还在 x86 PowerShell 中执行所有内容。平台设置为“活动(任何 CPU)”

这是我的 cmdlet 代码:

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");
        }
    }
}

这是我在尝试调用 Cmdlet 时遇到的错误:

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)的设置是否有问题?

4

4 回答 4

2

如果您选择 x86 作为您的平台,您还需要确保您使用的是 x86 版本的 PowerShell。请参阅此处了解如何执行此操作。您可能正在使用默认的 x64 版本的 powershell。请参阅此处了解更多信息。

或者将目标更改为 AnyCPU 并使用 installutil 注册管理单元两次。一次使用 32 位版本,也使用 64 位版本 (C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe)。

于 2014-01-05T20:54:59.990 回答
0

If you are making in some IDE like atom
You should open atom from PowerShell, like

just type atom there


Should work
于 2021-11-09T08:40:43.623 回答
0

如果您在某些 IDE 中进行制作,atom
您应该从 PowerShell 打开 atom,例如

只需 atom在那里输入


应该管用
于 2021-11-09T08:52:54.937 回答
-2

这为我解决了这个问题:https ://www.opentechguides.com/how-to/article/powershell/105/powershel-security-error.html

以管理员身份运行 PowerShell 并编写:

 PS C:\> Get-ExecutionPolicy -list  

 Scope     ExecutionPolicy
            -----     ---------------
    MachinePolicy     Undefined
       UserPolicy     Undefined
          Process     Undefined
      CurrentUser     Undefined
     LocalMachine     RemoteSigned

然后:

PS C:\> Set-ExecutionPolicy unrestricted 

希望它有效!

于 2020-02-06T14:47:43.913 回答