This thread让我开始很好,但现在我需要更多的帮助
我正在尝试遍历我的serverlist.txt文件,并将Get-EventLog的结果传递给Out-GridView,然后传递给.csv文件。我有这个工作,但我必须在GridView窗口中选择所有记录,然后为每个服务器单击OK。
所以,我想我想在循环外创建一个$ sys变量,进入,将结果附加到每个服务器的变量,然后退出循环并将$ sys传递给Grid-view。
我的困惑在于代码中的变量声明,类型,追加和位置......
我现在正在学习PS,所以这对你来说可能有点基础:)
此代码有效......需要在正确的位置添加变量构思:
#Drop the existing files
Remove-Item C:\system.csv
# SERVER LIST PROPERTIES
# Get computer list to check disk space. This is just a plain text file with the servers listed out.
$computers = Get-Content "C:\ServerList.txt";
#Declare $sys here ??
# QUERY COMPUTER SYSTEM EVENT LOG
foreach($computer in $computers)
{
if(Test-Connection $computer -Quiet -Count 1)
{
Try {
# $sys =
Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-7) `
| Select-Object -Property machineName, EntryType, EventID, Source, TimeGenerated, Message `
| Out-GridView -PassThru | Export-Csv C:\System.csv -NoTypeInformation -Append;
}
Catch
{
Write-Verbose "Error $($error[0]) encountered when attempting to get events from $computer"
}
}
else {
Write-Verbose "Failed to connect to $computer"
}
}
# $sys | Out-GridView....etc.
谢谢!
Kevin3NF
答案 0 :(得分:0)
为了解决这个问题,我使用了多条评论的建议:
$ sys = @()(在循环之外)
$ sys + = Get-EventLog(在循环内)
$ sys | Export-Csv(在循环之后发送到.csv)
我甚至在博客上写了整篇文章,包括我经历过的各种学习迭代: http://dallasdbas.com/getting-to-know-powershell-from-an-old-dba/
感谢所有帮助。这给了我一个框架,我会在需要时继续在这些服务器上使用它。
Kevin3NF