首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell Pscx扩展-存档方法故障检测

PowerShell Pscx扩展-存档方法故障检测
EN

Stack Overflow用户
提问于 2011-02-10 05:04:59
回答 2查看 2.7K关注 0票数 1

PowerShell片段:

代码语言:javascript
复制
Import-Module Pscx
Expand-Archive ConsoleApplication1.zip ./
Write-Host $?
Write-Host $LastExitCode

$?$LastExitCode都不报告错误。但是有错误,因为文件ConsoleApplication1.exe被锁定(我启动了这个应用程序)。通过以下输出,我可以看到失败:

代码语言:javascript
复制
WARNING: ArchiveCallBack->GetStream error: System.IO.IOException:
The process cannot access the file 'D:\tmp\ConsoleApplication1.exe'
 because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
...

问题:如何在powershell中检测展开存档失败

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-10 05:41:42

看来我找到了可行的解决方案:

代码语言:javascript
复制
$w = $null
Expand-Archive ConsoleApplication1.zip ./ -WarningVariable w

如果发生错误(或称其为警告),则在$w变量中收集它们。如果是$w.Count -gt 0,这意味着发生了一些错误/警告。

票数 3
EN

Stack Overflow用户

发布于 2011-02-10 05:50:08

$LastExitCode纯粹用于本地EXE退出代码。它不适用于cmdlet。如果cmdlet检测到它已经错误并写出了一个错误对象,那么$?应该可以工作。此cmdlet似乎没有在内部检测到错误。如果运行$error.Clear(),那么Expand-Archive命令$error[0]是否包含错误?

此外,当您尝试执行时,cmdlet是否仍在展开exe?在尝试执行控制台应用程序之前,我假设您正在等待cmdlet完成。我想也有可能存在一个错误,文件在那里被关闭/释放。如果您在[gc]::collect()之后尝试Expand-Archive,会怎么样?你还知道这个错误吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4953582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档