目前我正在尝试创建我的第一个PowerShell Snapin。我遵循了本教程:如何创建 PowerShell 管理单元,在我尝试调用我的自定义 cmdlet 之前,一切正常。此外,我还添加了一个"后期构建事件"来注册程序集。
"C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe" $(TargetPath)
之后我添加了 Snapin,它就像一个魅力:
Add-PSSnapin CustomSrv.Commands
系统.自动化参考的程序集的路径:
C:Program FilesReference AssembliesMicrosoftWindowsPowerShellv1.0System.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:WINDOWSsystem32> 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)的设置有问题吗?
如果选择x86作为平台,则还需要确保使用的是x86版本的PowerShell。请参阅此处了解如何执行此操作。您可能使用的是 x64 版本的 powershell,这是默认设置。请参阅此处以获取更多信息。
或者将目标更改为 AnyCPU,并使用 installutil 注册管理单元两次。一次是32位版本,一次是64位版本(C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe)。
如果您正在制作一些像
atom
这样的IDE。你应该从PowerShell打开atom,比如
只需在那里
输入atom
应该工作
如果您正在制作一些 IDE,例如
atom
你应该从PowerShell打开atom,比如
只需在那里
输入atom
应该工作
这为我修复了它: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
希望它有效!