Powershell 不会退出并显示我指定的错误代码 end keep以 1 结尾

问题描述 投票:0回答:1

我有 powrshell 脚本来检查 .xml 文件,如果找到 - 以 5 退出,否则以 0 退出:

# Ensure the script is run as administrator
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Host "You need to run this script as an administrator."
    exit 6
}

# Define the directories
$xmlRoot = "D:\myFolder"

# Count xml files in all subdirectories
$xmlFiles = Get-ChildItem -Path $xmlRoot -Recurse -Filter *.xml
$xmlCount = $xmlFiles.Count
Write-Host "Total xml files found: $xmlCount"

if ($xmlCount -gt 0) {
    exit 5
} else {
    exit 0
}

在 powershell 中,当我检查 $LASTEXITCODE 时,我确实看到了 5, 但是当我尝试在外部应用程序(例如 .bat)中捕获它时,我没有收到错误代码:

@echo off powersheel "c:\Users\location\countXML.ps1" echo exit code is %LASTEXITCODE% pause 
(我得到“退出代码是”,没有任何错误代码)

我尝试过:

  1. 使用“try--catch”和“throw”而不是退出
  2. 使用“返回”
  3. 在没有“检查管理”部分的情况下运行它
  4. 在bat中使用%ERRORLEVEL%(我得到“退出代码为1”)

但似乎没有任何帮助。

谢谢你。

powershell error-handling exit
1个回答
0
投票

我在另一个线程中找到了答案,作者:@js2010 https://stackoverflow.com/a/57429573/3170556

非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.