我正在尝试监视日志文件的最新条目,然后将输出传递给变量,以便我可以执行其他操作,对于此示例,我只是在控制台中弹出一条消息。
dplyr
我已经自己测试了Get-Content命令,这确实没有问题地对日志文件的输出进行Tail,但是当设置为Variable时我没有得到任何东西。
我还测试了后一部分,当我使用类似的东西手动定义$ fail变量时,这是有效的:
$fail = Get-Content 'C:\ProgramData\Software\APP.LOG' -Tail 0 -Wait | Select-String 'Error Alert Entry'
if ($fail -contains 'Error Alert Entry'){Write-Host "Warning Will Robinson!"}
似乎变量不喜欢通过主动拖尾日志文件来填充。如果有人能就如何克服这个问题提供一些指导,我将不胜感激。
答案 0 :(得分:1)
有时您必须使用PS检查您的假设。试试这个:
class EventSerializer(serializers.HyperlinkedModelSerializer):
comments = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='api:comment-detail'
)
然后这个:
$fail
现在这个:
$fail.GetType()
您认为$fail[0].GetType()
的数组实际上是String
返回的MatchInfo
数组。您应该能够通过从Select-String
对象中挖掘Value
来获得所需内容:
MatchInfo
或者你可以在第一行挖出价值:
$fail.matches.value -contains 'Error Alert Entry'
我必须承认,$fail = (Get-Content 'C:\ProgramData\Software\APP.LOG' -Tail 0 -Wait | Select-String 'Error Alert Entry').Matches.Value
似乎不适用于我的环境。尽管对文件进行了更改,该命令似乎无限期地挂起。
/编辑
好的,我想我现在明白了。 Get-Content -Tail 0 -Wait
永远不会退出,因此它永远不会完成将输出汇总到Get-Content -Tail 0 -Wait
并永远不允许Select-String
接收数据。
一种解决方案可能是将$fail
包裹在作业中并循环Get-Content -Tail 0 -Wait
来执行Receive-Job