【问题标题】:Get-Content command not recognized获取内容命令无法识别
【发布时间】:2015-06-17 10:19:31
【问题描述】:

我们有通常在 unix 环境中执行的脚本。 以下是脚本中的一行:

command => 'use/bin/tail -n 1 %{path} | grep --silent -F "%{message}" && rm -f {path}'

在 PowerShell 中运行时,use/bin/tail 路径显然无法识别。作为替代方案,我尝试了这个:

command => 'Get-Content -n 1 %{path} -Tail | grep --silent -F "%{message}" && rm -f {path}'

但是,虽然Get-Content 在从 PowerShell 命令行本身运行时可以识别,但在从脚本中运行时却无法识别。 这是错误信息:

'Get-Content' 未被识别为内部或外部命令、可运行程序或批处理文件。

在 PowerShell 中运行脚本时复制 unix tail 命令的正确方法是什么?

【问题讨论】:

    标签: powershell logstash


    【解决方案1】:

    您收到的错误:

    %1 is not recognized as an internal or external command, operable program or batch file.
    

    是来自cmd.exe 的标准错误,而不是powershell.exe

    您的命令不是由 powershell 主机执行,而是由常规命令提示符执行 - PowerShell 会提到在“找不到命令”的情况下调用“cmdlet、函数、脚本文件或可运行程序”的可能性(拼写错误的 Get-Content 是为了演示):

    您还需要稍微编辑命令,以便 PowerShell 理解它,管道中的第一条语句是:

    Get-Content $Path -Tail 1
    

    假设$Path 包含您要跟踪的文件的路径。

    【讨论】:

    • 谢谢。该脚本正在从 Powershell 命令行运行 - 需要做什么才能由 powershell 主机而不是命令提示符执行?
    • 你能发一张截图吗?我觉得这很难相信?!
    • @user1052610 不确定最后一部分。您是否正在等待某个消息出现,然后在出现该消息后删除该文件?
    • 我在.\logstash agent -f logstash.conf 行中没有看到Get-Content
    • 似乎 Windows 上的 logstash 默认 command 执行到 cmd.exe 以实现兼容性。我们无法解决您的 logstash 问题,抱歉
    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多