有没有办法在Linux系统上将Windows PowerShell程序集或类文件加载到PowerShell Core?我正在尝试运行一个调用“System.Security.Cryptography.AesManaged”类来加密字符串的脚本,但我收到以下错误:
New-Object : Cannot find type [System.Security.Cryptography.AesManaged]: verify that the assembly containing this type is loaded.
At /root/Acid/enc/Decrypt.ps1:10 char:19
+ ... $aesManaged = New-Object "System.Security.Cryptography.AesManaged"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
这是我初始化对象的PowerShell代码:
function Create-AesManagedObject($key, $IV) {
$aesManaged = New-Object "System.Security.Cryptography.AesManaged"
$aesManaged.Mode = [System.Security.Cryptography.CipherMode]::CBC
$aesManaged.Padding = [System.Security.Cryptography.PaddingMode]::Zeros
$aesManaged.BlockSize = 128
$aesManaged.KeySize = 256
if ($IV) {
if ($IV.getType().Name -eq "String") {
$aesManaged.IV = [System.Convert]::FromBase64String($IV)
}
else {
$aesManaged.IV = $IV
}
}
if ($key) {
if ($key.getType().Name -eq "String") {
$aesManaged.Key = [System.Convert]::FromBase64String($key)
}
else {
$aesManaged.Key = $key
}
}
$aesManaged
}
欢迎任何帮助,如果有更简单的方法,我很想知道!
答案 0 :(得分:-1)
您可以使用Add-Type
及其-Path
选项在已知位置加载程序集,或使用-AssemblyName
选项加载具有强名称的程序集。
然而,在这种情况下,文档说这个类来自System.Core
程序集,它应该已经加载了。 .NET Core可能在标准库中没有AES,但我还没准备好在这方面做出任何结论。