我在Windows中使用powershell作为shell。当我试图在PATH环境变量中启动一些缺少dll依赖项的应用程序时,没有任何反应,powershell只是以新的命令提示符静默返回。
有没有办法让powershell失败更大声,告诉我究竟缺少什么,比如默认的cmd shell呢?
答案 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
(-1073741515
,0xC0000142
),但是没有输出说明实际出了什么问题。通过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
变量。