我们有通常在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}'
但是,从PowerShell命令行本身运行时会识别Get-Content
,但在脚本中运行时无法识别它。
这是错误消息:
'获取内容'不被识别为内部或外部命令,可操作程序或批处理文件。
在PowerShell中运行脚本时,复制unix tail
命令的正确方法是什么?
答案 0 :(得分:5)
您收到的错误:
%1 is not recognized as an internal or external command, operable program or batch file.
是来自cmd.exe
的标准错误,而不是powershell.exe
:
您的命令不是由PowerShell主机执行,而是由常规命令提示符执行 - PowerShell会提到在“未找到命令”的情况下调用“cmdlet,函数,脚本文件或可操作程序”的可能性(故意拼写获取内容以证明):
您还需要更多地编辑命令,以便PowerShell理解它,管道中的第一个语句是:
Get-Content $Path -Tail 1
假设$Path
包含您正在追踪的文件的路径。