Powershell - 变量和 foreach 循环
Powershell - Variables and foreach loop
让我开始得很好,但现在我需要更多帮助
我正在尝试遍历我的 serverlist.txt 文件,并将 Get-EventLog 的结果传递给 Out-GridView,然后再传递给 .csv 文件。我有这个工作,但我必须 select GridView window 中的所有记录,然后为每个服务器单击“确定”。
所以,我想在循环外创建一个 $sys 变量,进入,将结果附加到每个服务器的该变量,然后退出循环并将 $sys 传递给 Grid-查看。
我的困惑来自代码中的变量声明、类型、附加和放置...
我现在刚开始学习 PS,所以这对你来说可能有点基础:)
此代码有效...需要在正确的位置添加变量 idea:
#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.
谢谢!
凯文3NF
为了解决这个问题,我使用了来自多个评论的建议:
$sys = @()(循环外)
$sys += Get-EventLog(循环内)
$系统 | Export-Csv(循环后发送到.csv)
我什至把整件事都写在了博客上,包括我经历的所有不同的学习迭代:
http://dallasdbas.com/getting-to-know-powershell-from-an-old-dba/
感谢所有的帮助。这给了我一个框架,我将在需要时继续在这些服务器上使用。
凯文3NF
我正在尝试遍历我的 serverlist.txt 文件,并将 Get-EventLog 的结果传递给 Out-GridView,然后再传递给 .csv 文件。我有这个工作,但我必须 select GridView window 中的所有记录,然后为每个服务器单击“确定”。
所以,我想在循环外创建一个 $sys 变量,进入,将结果附加到每个服务器的该变量,然后退出循环并将 $sys 传递给 Grid-查看。
我的困惑来自代码中的变量声明、类型、附加和放置...
我现在刚开始学习 PS,所以这对你来说可能有点基础:)
此代码有效...需要在正确的位置添加变量 idea:
#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.
谢谢!
凯文3NF
为了解决这个问题,我使用了来自多个评论的建议:
$sys = @()(循环外)
$sys += Get-EventLog(循环内)
$系统 | Export-Csv(循环后发送到.csv)
我什至把整件事都写在了博客上,包括我经历的所有不同的学习迭代: http://dallasdbas.com/getting-to-know-powershell-from-an-old-dba/
感谢所有的帮助。这给了我一个框架,我将在需要时继续在这些服务器上使用。
凯文3NF