PowershellScript ObjectNotFoundException CommandNotFoundException Path

时间:2016-10-12 07:59:51

标签: powershell exception powershell-v2.0 powershell-v3.0 sn

我用SNK-Files签署我的Dlls。通过visual studio构建可以毫无问题地完成这项工作。

现在我想验证我真正给它们强名的DLL。我发现this powershell script,但我认为powershell讨厌我的道路。

Clear-Host

$path="C:\Users\MyName\Desktop\BuildOutput\Debug"
$snPath = "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.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
} 

我的错误是

  

在线:1个字符:19

     
      
  • C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6.1 ...
  •   
  • ~~~      
        
    • CategoryInfo:ObjectNotFound:(x86:String)[],CommandNotFoundException
    •   
    • FullyQualifiedErrorId:CommandNotFoundException
    •   
  •   

我翻译了更多错误信息。

  

术语“x86”未被识别为cmdlet,函数,脚本文件或可执行文件的名称。   检查名称的拼写,或路径是否正确(如果包含),然后重试。

我是否必须逃离x86?如果是的话 - 我怎么能这样做?我试过了this

我总是试着用同样的结果。

$snPath = "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe"

$snPath = ${env:CommonProgramFiles(x86)} + "\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe"

$snPath =  ${env:ProgramFiles(x86)} + "\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe"

$snPath = [Environment]::GetEnvironmentVariable("ProgramFiles(x86)") + + "\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe"

Powershell版本

专业:5
轻微:1 建立:14393 修订:103

修改

我修复了我的snPath

我举了更多例子

更多错误信息

1 个答案:

答案 0 :(得分:2)

而不是

$expression = $snPath + ' -vf "' +  $item.FullName +'"'
$verify = Invoke-Expression $expression
你可以这样做:

$verify = & $snPath -vf $item.FullName