【发布时间】:2016-04-29 16:27:43
【问题描述】:
我正在尝试通过 Windows 命令提示符启动 PowerShell 命令以将文本替换为文件。问题是我总是得到 ErrorLevel = 0 即使我的 PowerShell 命令不起作用。
我的问题是当我通过cmd 启动 PowerShell 时,如何将错误代码输入 ErrorLevel?
请注意,我想通过 Windows 命令提示符而不是通过创建脚本来实现这一点。
这是我所说的一个例子。打印屏幕中的错误是故意通过选择一个不存在的文件来向您显示即使出现错误,ErrorLevel 也等于 0。
我使用的命令如下(我试过$LastExitCode和$ExitCode):
powershell -NonInteractive -NoProfile -Command "(Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref; exit $LastExitCode"
但我也尝试过:
powershell -NonInteractive -NoProfile -Command "(Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref; exit $ExitCode"
根据 majkinetor 的评论,我尝试了以下方法,但效果不佳:(,即使在 powershell 中发生错误,我也会在 Dos 中不断收到 ErrorLevel 0。
powershell -noprofile -command " try { (Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref } catch {exit $LastExitCode}"
可以清楚的看到文件名相关的错误不存在,但错误级别始终为0。
我想要的是为执行 PowerShell 命令时发生的每个错误获取除 0 以外的错误代码。
根据我读到的一些 cmets,我想说:我想通过 PowerShell 和 Dos 命令而不是用不同的方式来制作它。我不想制作自己的错误代码或个性化的错误管理!我想要的是当我的powershell(代码,脚本等)发生错误时,Dos的错误级别会得到这个错误代码(我不想制作自己的代码)。 欢迎有答案的人并感谢他们,但那些在这里只是通过要求更改我想要的内容或删除图片等来评论无用的 cmets...请不要发表评论,除非提供帮助和回答我的问题,而不是提出其他问题,我正在寻求有关特定问题的帮助,请不要将主题更改为其他内容。本网站的想法是提供帮助,而不是添加无用和无用的 cmets。
【问题讨论】:
-
@Bill_Stewart,当我们寻求帮助时,并不是为了得到关于其他事情的答案......你的评论根本没有帮助......如果我想用不同的方式做到这一点我不会问我的问题
-
@KenWhite Personnaly 当我阅读问题并想提供帮助时,我更喜欢打印屏幕而不是代码...无论如何我会裁剪图像,但我不会删除它们...谢谢反正
-
太棒了。你一个人站着。我给了你一长串这个网站不喜欢图片的原因,显然你没有读过它。避免在图像中使用代码的最大原因是人们无法复制并粘贴它以尝试提供帮助,而且大多数人都不愿意重新输入。因此,如果您想减少(或至少延迟)获得帮助的机会,请继续在图片中发布代码。
-
@Bill_Stewart 当您不了解公司的环境和询问者等时,您无法判断...如果您有问题的答案,请给出,如果您没有没关系,不需要让这个人做其他事情......如果我想要或可以用不同的方式做到这一点,我不会在这里问我的问题......感谢您尊重人们的问题。我知道我为什么要求这样做,我不想写 5 页来解释原因,我试图直接去找目标并提出一个直接的问题..
-
你得到了零,因为这是你传递的值。如果您想使用任一变量作为退出代码,您必须将它们设置为某个值。
标签: windows powershell cmd errorlevel