我用SNK-Files签署我的dll。通过visual studio构建可以毫无问题地完成。
现在我想验证我是否真的给了dll一个强名称。我找到了这个powershell脚本,但是我觉得powershell不喜欢我的路径。
Clear-Host
$path="C:UsersMyNameDesktopBuildOutputDebug"
$snPath = "C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.6.1 Toolssn.exe"
foreach ($item in Get-ChildItem $path -Recurse -Include *.dll, *.exe)
{
$reportLine = $item.FullName + "," + $item.Extension
#validate integrity
$expression = $snPath + ' -vf "' + $item.FullName +'"'
$verify = Invoke-Expression $expression
$isValid = $verify | Select-String -Pattern "is valid"
if($isValid)
{
$reportLine = $reportLine + ",ist signiert"
}
else
{
$reportLine = $reportLine + ",ist nicht signiert"
}
#extract token
$expression = $snPath + ' -Tp "' + $item.FullName +'"'
$result = Invoke-Expression $expression
$tokenString = $result | Select-String -Pattern "key token is"
if($tokenString)
{
$token = $tokenString.Tostring().Substring(20)
$reportLine = $reportLine + "," +$token
}
$reportLine
}
错误是
In Line:1 Character:19
- C:Program Files (x86)Microsoft sdk Windowsv10.0AbinNETFX 4.6.1…
- ~ ~ ~
- CategoryInfo: ObjectNotFound: (x86:String) [], CommandNotFoundException
- fulllyqualifiederror: CommandNotFoundException
我翻译了更多错误信息。
术语"x86"不能被识别为cmdlet、函数、脚本文件或可执行文件的名称。检查名称的拼写,或者路径是否正确(如果包含),然后重试。
我必须转义x86吗?如果是,我该怎么做?我试过了。
我试过了,结果总是一样的。
$snPath = "C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.6.1 Toolssn.exe"
$snPath = ${env:CommonProgramFiles(x86)} + "Microsoft SDKsWindowsv10.0AbinNETFX 4.6.1 Toolssn.exe"
$snPath = ${env:ProgramFiles(x86)} + "Microsoft SDKsWindowsv10.0AbinNETFX 4.6.1 Toolssn.exe"
$snPath = [Environment]::GetEnvironmentVariable("ProgramFiles(x86)") + + "Microsoft SDKsWindowsv10.0AbinNETFX 4.6.1 Toolssn.exe"
Powershell版本
主要:5小:1构建:14393修改:103
编辑
我修复了snPath
我给了更多的例子
更多错误信息
代替
$expression = $snPath + ' -vf "' + $item.FullName +'"'
$verify = Invoke-Expression $expression
你可以这样做:
$verify = & $snPath -vf $item.FullName