1. 复现问题
今天,使用如下命令在Windows PowerShell
中执行时:
telnet 127.0.0.1 80
却报出如下错误:
PS C:\Users\zxy> telnet 127.0.0.1 80
telnet : 无法将“telnet”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ telnet 127.0.0.1 80
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (telnet:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
为什么会报出这个错误?接下来我便详细分析和解决。
2. 分析问题
首先,我们使用如下命令:
Get-ExecutionPolicy -List
查看当前所有作用域,如下图所示:
你会发现,如上最后一个作用域有权限,其他作用域都没有权限,那么,我们就需要去给它设置权限。
3. 解决问题
首先,在左下角搜索框输入Windows PowerShell
,如下所示:
若你不想使用搜索框,可以直接按window + r
,输入PowerShell
(蓝色运行屏幕), 也可以cmd
(黑色运行屏幕),点击确定即可:
如果你还没安装Windows PowerShell
,可以点击该链接安装:下载安装Windows PowerShell教程。
我们以管理员身份打开Windows PowerShell
,可以使用如是Set-ExecutionPolicy RemoteSigned -Scope < scopeName >
命令,给其设置权限,比如给CurrentUser
的scope
设置权限:
PS C:\Users\zxy> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https://fwlink/?LinkID=135170 中的 about_Execution_Policies
帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): A
我们再次输入如下命令,查看CurrentUser
是否有权限。
你可以清晰地看到,CurrentUser
已经有用权限了。
按照上面的格式,执行需要加权限的作用域,然后再去尝试之前的方法,发现就不会报错提示了。