正在将事件日志写入文件,powershell

正在将事件日志写入文件,powershell,powershell,powershell-2.0,Powershell,Powershell 2.0,因此,假设您想查看lan上所有桌面上类型应用程序的事件日志中的最后3项内容。我的问题是,下面的$a构成了一个数组(我想),我想把它写到一个文件中。现在它“工作”了,但每台机器只吐出几行空白。如果$msg=被注释掉,我会得到这个“异常调用”Join“和“2”参数:“值不能为null。” 您考虑的是文本,而不是管道中的对象。不要试图解析、连接或乱用字符串 $servers = "machine1, "machine2" $date = ( get-date ).ToString('yyyyMMdd'

因此,假设您想查看lan上所有桌面上类型应用程序的事件日志中的最后3项内容。我的问题是,下面的$a构成了一个数组(我想),我想把它写到一个文件中。现在它“工作”了,但每台机器只吐出几行空白。如果$msg=被注释掉,我会得到这个“异常调用”Join“和“2”参数:“值不能为null。”


您考虑的是文本,而不是管道中的对象。不要试图解析、连接或乱用字符串

$servers = "machine1, "machine2"
$date = ( get-date ).ToString('yyyyMMdd')
$file = New-Item -type file "c:\temp\$date-test1.txt" -Force
Get-EventLog -log Application -Computer $servers -entry Warning -newest 3 | Select MachineName,Source,Message | out-file $file

首先感谢您的回复,答案是99%完美。添加此“-属性源,消息-自动调整大小“允许完整的事件消息,上面只给出第一句话的2/3左右。我添加/更改了以下内容:获取事件日志-日志应用程序-计算机$servers-条目警告-最新3 |选择MachineName,Source,Message |格式表-Wrap-属性MachineName,Source,Message-自动调整大小|输出文件$file你现在明白了。也就是说,我的简单方法的一个缺点是,它假定计算机的列表很短,并且它们都是在线的。更健壮的方法需要错误处理,可能是try/Catch,甚至是Write proges。在这些情况下,ForEach构造可能更有意义,但我仍然会放弃使用字符串,而只是通过管道将输出输出输出到Out文件。
$servers = "machine1, "machine2"
$date = ( get-date ).ToString('yyyyMMdd')
$file = New-Item -type file "c:\temp\$date-test1.txt" -Force
Get-EventLog -log Application -Computer $servers -entry Warning -newest 3 | Select MachineName,Source,Message | out-file $file