Windows 分配变量后,无法将日志文件中的尾部数据打印到PowerShell控制台

Windows 分配变量后,无法将日志文件中的尾部数据打印到PowerShell控制台,windows,powershell-5.0,Windows,Powershell 5.0,我试图创建一个脚本,通过监视日志文件中的特定关键字,在Windows应用程序关闭时通知我: 获取内容-尾部-等待|选择字符串-模式 我也试过了 获取内容-Tail-Wait | where{$\匹配} 使用上面显示的Get内容的两种变体,我可以成功地检索到告诉我服务器停机的关键字。我知道这是成功的,因为我看到控制台上显示的关键字行。但是,当我尝试分配变量时: $var=获取内容-尾部-等待|选择字符串-模式 写入主机$var $var 它不再在控制台上显示包含字符串的行 以下是实际脚本: $Do

我试图创建一个脚本,通过监视日志文件中的特定关键字,在Windows应用程序关闭时通知我:

获取内容-尾部-等待|选择字符串-模式 我也试过了

获取内容-Tail-Wait | where{$\匹配} 使用上面显示的Get内容的两种变体,我可以成功地检索到告诉我服务器停机的关键字。我知道这是成功的,因为我看到控制台上显示的关键字行。但是,当我尝试分配变量时:

$var=获取内容-尾部-等待|选择字符串-模式 写入主机$var $var 它不再在控制台上显示包含字符串的行

以下是实际脚本:

$Downstate=获取内容-路径C:\Program Files x86\logs\log1.txt-Tail 1-等待| 选择字符串模式tcp\U断开连接 写入主机$Downstate $Downstate 我还尝试:

$Downstate=获取内容-路径C:\Program Files x86\logs\log1.txt-Tail 1-等待| 其中{$\匹配tcp\断开连接} 我试过写主机和写内容

当我赋值给一个变量时,我没有得到任何错误,只是在控制台上看不到输出。但是如果我没有赋值给变量,我可以看到输出


最终,我想要的是将一个变量分配给一个向上和向下的条件,这样当我准备创建一个在给定条件下执行某些操作的逻辑时,我可以在脚本中引用它们。

以下方法对我有效:

$infile = 'D:\PShell\DataFiles\so_57360147.txt'    ## my test case
$infile = 'C:\Program Files (x86)\logs\log1.txt'
Get-Content -path "$infile" -Tail 1 -Wait | 
    Select-String -pattern "tcp_disconnect" |
        ForEach-Object { 
            $Downstate = $_
            Write-Host $Downstate -Foreground Cyan ## debugging
            $Downstate                             ## real output
        }
从获取内容文档中派生的解释:

等等

输出所有现有行后保持文件打开。虽然 等待,获取内容每秒检查一次文件并输出 新行(如果存在)。按可中断等待 CTRL+C。如果文件被删除,等待也将结束 已删除,在这种情况下会报告非终止错误

Wait是文件系统提供程序添加到 获取内容cmdlet。此参数仅适用于文件系统驱动器。 Wait不能与Raw组合