因SHA256类型未找到错误无法在PowerShell 7中安装InSpec
解决PowerShell 7安装InSpec时的SHA256Cng类型找不到错误
问题原因
[Security.Cryptography.SHA256Cng]是仅.NET Framework专属的加密类型,而PowerShell 7基于.NET Core/.NET 5+运行时,默认不包含该类型。Chef官方的install.ps1脚本目前仍依赖这个.NET Framework特有的类型,导致在PS7中执行安装时触发报错。你测试SHA256功能正常,是因为PS7使用的是.NET Core兼容的SHA256实现(如SHA256.Create()),和脚本依赖的类型并非同一实现。
解决方案
方法1:修改安装脚本的哈希验证逻辑
- 先把安装脚本下载到本地:
Invoke-WebRequest -Uri https://omnitruck.chef.io/install.ps1 -OutFile .\install.ps1 - 用文本编辑器打开
install.ps1,搜索包含SHA256Cng的代码段(通常是文件哈希验证部分),将其替换为PS7兼容的代码:
原代码示例:
替换为:$sha256 = New-Object Security.Cryptography.SHA256Cng $hash = $sha256.ComputeHash([System.IO.File]::ReadAllBytes($filePath))$sha256 = [System.Security.Cryptography.SHA256]::Create() $hash = $sha256.ComputeHash([System.IO.File]::ReadAllBytes($filePath)) - 在PS7中执行修改后的脚本:
.\install.ps1; install -project inspec
方法2:手动下载安装包安装
跳过脚本安装流程,直接手动获取InSpec安装包:
- 找到对应Windows版本的InSpec MSI安装包(匹配你的系统架构)
- 下载后,可直接双击MSI完成安装,或在PS7中用命令行静默安装:
Start-Process msiexec.exe -ArgumentList '/i "C:\path\to\inspec-x.x.x-x64.msi" /qn' -Wait
内容的提问来源于stack exchange,提问作者Fr0ntSight
相关产品推荐
相关产品推荐

