如何使PowerShell告诉我有关丢失的DLL?

时间:2014-04-11 12:17:35

标签: windows shell powershell

我在Windows中使用powershell作为shell。当我试图在PATH环境变量中启动一些缺少dll依赖项的应用程序时,没有任何反应,powershell只是以新的命令提示符静默返回。

有没有办法让powershell失败更大声,告诉我究竟缺少什么,比如默认的cmd shell呢?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 PowerShell将Dim rng As Range Set rng = Range("YourAvrCell") Debug.Print rng.Precedents.Address(RowAbsolute:=False, ColumnAbsolute:=False) Debug.Print rng.Precedents.Row Debug.Print rng.Precedents.Rows.Count + r.Precedents.Row - 1 代码设置为$LASTEXITCODE-10737415150xC0000142),但是没有输出说明实际出了什么问题。通过cmd.exe运行它时,我将弹出类似以下内容的窗口:

因为找不到some.dll,所以无法继续执行代码。重新安装程序可能会解决此问题。

cygwin bash输出与stderr找不到的dll相关的错误,如果您通过PowerShell中的bash运行相同的dll,则可以看到错误:

3221225794

这也适用于git bash:

> & 'C:\tools\cygwin\bin\bash.exe' '-c' '"C:/Users/xxx/dir/main.exe"'
C:/Users/xxx/dir/main.exe: error while loading shared libraries: another.dll: cannot open shared object file: No such file or directory

很不错,但总比没有好。

答案 1 :(得分:0)

恐怕无法获取该信息......但请尝试阅读

PowerShell中的错误处理简介 http://blogs.msdn.com/b/kebab/archive/2013/06/09/an-introduction-to-error-handling-in-powershell.aspx

PowerShell教程 - 尝试最后捕获和PowerShell中的错误处理 http://www.vexasoft.com/blogs/powershell/7255220-powershell-tutorial-try-catch-finally-and-error-handling-in-powershell

Try
{
    $AuthorizedUsers = Get-Content \\ FileServer\HRShare\UserList.txt -ErrorAction Stop
}
Catch [System.OutOfMemoryException]
{
    Restart-Computer localhost
}
Catch
{
    $ErrorMessage = $_.Exception.Message
    $FailedItem = $_.Exception.ItemName
    Send-MailMessage -From ExpensesBot@MyCompany.Com -To WinAdmin@MyCompany.Com -Subject "HR File Read Failed!" -SmtpServer EXCH01.AD.MyCompany.Com -Body "We failed to read file $FailedItem. The error message was $ErrorMessage"
    Break
}
Finally
{
    $Time=Get-Date
    "This script made a read attempt at $Time" | out-file c:\logs\ExpensesScript.log -append
}

答案 2 :(得分:0)

您可以echo %ERROR%变量,该变量存储错误,直到关闭PowerShell窗口为止。

更新:在PowerShell中,您可以使用Get-Error命令,或查看$Error变量。