将 cmd 错误捕获到当前目录中的文件中?

2024-01-08

我有一个 PowerShell 脚本,可以重新启动文件中列出的服务器。

foreach ($server in $servers) {
    try {
        cmd /c "shutdown.exe /r /f /m \\$server /t 0 /d p:0:0 /c 'PlannedRestart'" 
        "$server`tRestarted"
        "$server`tRestarted" | Out-File -FilePath .\RestartServers_LOG.txt -Append
    } catch {
        "$server`t" + cmd /c ">&1"
        "$server`t" + cmd /c "dir > .\RestartServers_LOG.txt 2>&1"
    }
}

我试图捕获 CMD 可能发生的任何错误,以输出到 PowerShell 会话以及当前目录中的文件,因此在 PowerShell 中,这将是.\但我不知道CMD当前的目录规范是什么。除非是同一个东西?

本质上,我希望完成类似于我们如何捕获 PowerShell 的异常消息的事情,如下所示:

"$server`t" + $_.Exception.Message.ToString().Split(":")[1].Replace("`n","") |
    Out-File -FilePath .\RestartServers_LOG.txt -Append

但 CMD 并不像 PowerShell 那样处理异常,而是处理 STDERR。

注意:我使用的是命令shutdown.exe因为不幸的是,PowerShell 无法“计划”或“计划外”重新启动。


就用 PoSh 的方式来做吧:

$params = '/r', '/f',
          '/t', '0',
          '/d', 'p:0:0',
          '/c', 'PlannedRestart'

$servers | ForEach-Object {
    $output = & shutdown.exe /m "\\${_}" @params 2>&1
    if ($LastExitCode -eq 0) {
        "{0}`tRestarted" -f $_
    } else {
        "{0}`tRestart failed:`t{1}" -f $_, $output
    }
} | Set-Content '.\RestartServers_LOG.txt'

外部命令首先不会抛出异常,所以你的try..catch反正什么也不会做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 cmd 错误捕获到当前目录中的文件中? 的相关文章

随机推荐

  • 搜索/迭代 boost::spirit::qi::symbols

    如果我有一个符号表 struct MySymbols symbols
  • OCaml构造函数解包

    是否可以通过将数据绑定到单个值而不是元组来解包类型 type foo Foo of int string type foo Foo of int string Foo 3 bar Foo 3 bar Error The constructo
  • 如何为 geopandas 图制作表格图例

    我正在使用 geopandas 绘制分区统计图 并且需要绘制自定义的表格图例 这个问题 https stackoverflow com questions 44567107 how to make tabular legend using
  • 函数如何检查打字稿中的 null ?

    在 typescript 2 6 中 我想编写一个执行空检查的函数 当我启用严格的空检查时 typescript 2 6 会抱怨以下代码 注意 使用空检查时直接起作用 编辑 已更正notNullOrUndefined因为它没有检查 foo
  • 具有无限参数但具有相同(固定)类型的 C++ 函数

    我想要一个具有无限数量参数的函数 但我还想确保这些都是同一类型的指针 像这样的事情 void myFunc float value MyClass take all pointers of type MyClass and call fun
  • SQL Server 脚本生成器从十六进制转换日期时间值

    我需要从 SQL Server 生成插入脚本 当我使用 SQL Server 脚本生成器时 它会从十六进制转换日期时间值 例如 CAST xxxxxxxxxxxxx as dateTime 我怎样才能避免这种情况 我想要脚本中的实际值 不幸
  • Google Picker API 和选择 Google 云端硬盘项目的问题

    我正在尝试集成 Google Picker 以从 Google Drive 选择文件 如下这个例子 https developers google com drive integrate open 打开选择器时 我在 javascript
  • 使用 NSTask 和 NSPipe 导致 CPU 使用率 100%

    我正在尝试使用 NSTask 运行一个简单的 bash 脚本并将输出定向到文本视图 任务执行后 我的应用程序的 CPU 使用率为 100 即使它是一个简单的任务echo 目前 我创建了一个全新的项目来隔离该问题 interface AppD
  • 如何将 Byte[](解码为 PNG 或 JPG)转换为 Tensorflows 张量

    我正在尝试在 Unity 的项目中使用 Tensorflowsharp 我面临的问题是 对于转换 您通常使用第二个图将输入转换为张量 Android 不支持使用的函数 DecodeJpg 和 DecodePng 那么如何将该输入转换为张量
  • 如何使用 PHP 处理邮件发送错误

    我正在构建一个用于发送新闻通讯的 symfony 模块 这个想法是建立一个地址队列列表来接收邮件 然后使用 cron 作业 一次发送 50 个邮件 我现在不知道如何做是阅读当电子邮件地址不存在或邮件已满时服务器发回的邮件传送报告 这个想法是
  • 在 HTML 中查找值的快速方法 (Java)

    使用正则表达式 获取网站 HTML 并查找此标记内的值 或与此相关的任何属性值 的最简单方法是什么 snip snip 取决于您需要构建的 Http 请求的复杂程度 身份验证等 这是我过去见过的一种简单方法 StringBuilder ht
  • 检查丢失的软件包并安装它们的优雅方法?

    这些天我似乎与合著者分享了很多代码 他们中的许多人都是 R 新手 中级用户 并且没有意识到他们必须安装他们尚未安装的软件包 有没有一种优雅的调用方式installed packages 将其与我正在加载和安装的那些进行比较 如果丢失 是的
  • Windows 批处理文件中一行中的多个命令

    在 Unix 中 我们可以将多个命令放在一行中 如下所示 date ls l date 我在Windows中尝试过类似的事情 gt echo TIME dir echo TIME 但它打印了时间并且不执行命令dir 我怎样才能实现这个目标
  • 在mapview中绘制透明的圆

    我的地图视图和叠加有问题 每次改变 GPS 位置时 我都必须在地图上画一个圆圈 我在覆盖类中使用了扩展覆盖的方法绘制 问题是我必须以透明度绘制这些圆圈 但是当圆圈在交点处相互重叠时 颜色会有所不同 因为存在 alpha 之和 我该如何修复它
  • 多线程Hello World

    使用两个线程 您应该打印 Hello World Hello World Hello World Hello World Hello World Hello World 在两个线程中 一个应该打印 Hello 另一个线程应该打印 World
  • 将本地时间转换为 UTC 时,如何使 Time::Piece 尊重 DST?

    我想将时间戳从当地时间转换为 GMT 我有遗留代码 手动 执行此操作Time Local timelocal and gmtime 它有效 但我不喜欢它并想使用Time Piece反而 我用了这个答案 https stackoverflow
  • pyinstaller 没有名为 pyinstaller 的模块

    我的 mac osx sierra 下安装了 2 个 python 版本 蟒蛇3 5 蟒蛇2 7 我使用以下命令在 python3 5 下安装了 pyinstaller python3 5 m pip install pyinstaller
  • 设置 CSS 列中第一项的样式

    我有一个显示在多列上的列表 每个列表项都是块元素 display block 并附加了一些样式 底部有 1px 边框 目前看起来是这样的 List item List item List item List item List item L
  • 如何以编程方式确定蓝牙主/从角色?

    因此 在蓝牙微微网中 有一个主设备和最多七个从设备 主设备设置从设备同步的时钟和跳频 但有没有办法确定哪个设备是主设备 哪个设备是从设备呢 我主要对便携式设备 Android iPhone 感兴趣 但乞丐不能是选择者 如果有人有这个领域的信
  • 将 cmd 错误捕获到当前目录中的文件中?

    我有一个 PowerShell 脚本 可以重新启动文件中列出的服务器 foreach server in servers try cmd c shutdown exe r f m server t 0 d p 0 0 c PlannedRe