gpt4 book ai didi

powershell - 将控制台输出写入文件 - 文件意外为空

转载 作者:行者123 更新时间:2023-12-04 17:14:37 26 4
gpt4 key购买 nike

我是脚本新手,我正在尝试将返回的有关 VM 的信息写入文本文件。我的脚本如下所示:

Connect-VIServer -Server 192.168.255.255 -Protocol https -User xxxx -Password XXXXXX

Get-VM -Name xxxxxx

Get-VM xxxxx | Get-HardDisk | Select Parent, Name, Filename, DiskType, Persistence | FT -AutoSize

Out-File -FilePath C:Filepath

我能够连接到虚拟机,检索硬盘信息并在控制台中查看。该文件在我想要的位置创建并正确命名。没有数据被放入文件中。我已经尝试过 Tee-Object 具有相同的结果。我也试过 -append 开关。我确实看到了一篇关于以数组形式返回的数据的帖子,而 Powershell 无法将数据从数组移动到字符串。我是否需要创建一个变量来保存返回的数据并从那里写入文件?

谢谢

最佳答案

Guenther Schmitz' answer是有效的,但值得解释为什么:

  • 您的 Out-File -FilePath C:Filepath是一个不接收任何输入的独立命令。
  • 一个 Out-File没有输入的调用只会创建一个空文件(0 字节)。
  • 为了 cmdlet,例如 Out-File要接收来自(一个)其他命令的输入(在下面表示为 ...),您必须使用 pipeline ,这意味着您必须放置 |在输入命令之后并使用您的 Out-File调用:请注意,我使用的是较短的 -Path不常用的参数别名-FilePath [1]
    ... | Out-File -Path C:Filepath
  • 在最简单的情况下,如上,整个命令(管道)放在同一行;如果您想将它分布在多行以提高可读性,您有两种选择:
  • | 之后立即换行,它告诉 PowerShell 命令在下一行继续:
    ... |
    Out-File -Path C:Filepath
  • 以明确的续行结束一行,这意味着放置 `在一行的最后:
    ... `
    | Out-File -Path C:Filepath

  • 或者,由于您使用的是 Out-File使用其默认行为,您可以使用 > ,输出重定向,而不是:
    ... > C:Filepath

    一些旁白:
  • 使用 Out-File使用字符串以外的其他内容,并使用 Format-*一般来说,cmdlet 意味着输出只适合显示(人类消费),而不适合进一步的编程处理。
  • 如果要将输出发送到控制台和文件,请使用 Tee-Object cmdlet,如 TobyU建议:
    ... | Tee-Object -Path C:Filepath


  • [1] 严格来说, -LiteralPath在这种情况下是最好的选择,因为 -Path将其参数解释为通配符表达式。但是,省略 -Path ,即将文件路径指定为位置参数,这很常见,隐式绑定(bind)到 -Path .

    关于powershell - 将控制台输出写入文件 - 文件意外为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55101518/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com