无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\tsc.ps1,因为在此系统上禁止运行脚本

以下是完整的错误:

tsc : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\tsc.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 ht
tps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ tsc -v
+ ~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

遇到这个错误的时候,当然首先是跳到官方的指南https:/go.microsoft.com/fwlink/?LinkID=135170看一下。发现是PowerShell 执行策略的问题,于是你可以按照指南更新一下执行策略。
在这里插入图片描述

但是当我发现是给所有的脚本都添加成信任执行的时候,我就犹豫了。然后认真去看了一下tsc的模块目录如下:
在这里插入图片描述
然后查看了里面的脚本内容,对比了一下,其实tsc是Linux环境执行,tsc.cmd是window的cmd执行的,tsc.ps1则是对应着power shell,对比了一下几个脚本其实其核心都是运行node "$basedir/../typescript/bin/tsc" "$@",那么问题就很好解决了,把终端切换cmd或者使用git bash去执行即可。
其实出现这个问题都是新手使用vscode的问题导致的,于是乎,我接着往下看怎么解决vscode默认的终端切换问题。因为是初次使用故此记录一下:
文件->首选项->设置:搜索‘shell’,找到下图所示样例,也可以将默认终端修改成git bash。
在这里插入图片描述
至此 是初步解决了问题启动的问题,但是最终的问题并没有解决,于是乎,接着往下挖坑。能不能添加单独的脚本签名而不是所有的脚本都直接跳过所有的脚本认证呢?
1、你需要把执行策略更换成AllSigned
在这里插入图片描述
具体命令如下:
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
2、需要给运行的脚本添加签名

# 1. Create a certificate to use for signing powershell scripts
$selfsigncert = New-SelfSignedCertificate -Type CodeSigningCert  -Subject "CN=PowerShell Code Signing"  -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation "Cert:\LocalMachine\My"
# 2. Sign script
Set-AuthenticodeSignature -FilePath .\tsc.ps1 -Certificate $selfsigncert
# 3. Move the root cert into Trusted Root CAs
Move-Item "Cert:\LocalMachine\My\$($selfsigncert.Thumbprint)" Cert:\LocalMachine\Root

第一步是构造一个签名证书,第二步是为脚本添加签名,第三步比较重要,是将证书添加为可信任证书。
如果没有第三步,提示如下:
在这里插入图片描述
如果上面没有问题,则可以看到如下情况:
在这里插入图片描述
脚本的末尾会自动添加上签名:
在这里插入图片描述
于是就可以正常执行tsc -v 的命令,提示如下:
在这里插入图片描述
根据自己的需要而选择即可。
此次 解决了问题,又学习了vscode的使用方法,还熟悉了一下win的shell的脚本,注册表等。
坚持遇到问题不慌,先自己一步一步定位,后再搜索引擎。

https://www.it1352.com/2045661.html

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值