Powershell脚本不显示每个输出或合并多个服务器csv的

jq6vz3qz  于 11个月前  发布在  Shell
关注(0)|答案(1)|浏览(135)

我遇到的问题;这个脚本并没有提取每个服务器的csv文件并将其编译成一个csv文件,它只带来了一个特定服务器的信息,如果我将其更改为write-host,它将带回同一个服务器的多个报告。
我正在尝试做的是接触到所有的服务器在一个集群,拉指定的csv,合并每个csv成一个。每个服务器应该在自己的线。有人能帮助我指出正确的方向吗?

Import-Module ActiveDirectory
# Select the servers you want to hit $servers = (Get-ADComputer -SearchBase "OU" -filter *).name

foreach ($server in $servers) {
    $sourcefolder = 'C$\folder\'
    $sourcefiles = Get-ChildItem -Path $sourcefolder -Filter serverinfo.csv
    $result = @()
    foreach ($file in $sourcefiles) {
        $data = Import-Csv $file.FullName
        $result += $data
    }
}
$result | Export-Csv '\\mycomputer\C$\folder\merged.csv' -NoTypeInformation
$result

字符串

tcomlyy6

tcomlyy61#

你在循环中重置$result数组,这是上一次迭代的信息基本上丢失的地方。一个更简单的方法可以利用管道,然后不需要数组:

$sourcefolder = 'C$\folder'
$servers | ForEach-Object{
    # makes a new UNC path using the server
    $target = [System.IO.Path]::Combine(
        "\\$_",
        $sourcefolder,
        'serverinfo.csv')

    # assuming there is a "serverinfo.csv" in "\\servername\C$\folder\serverinfo.csv"
    $item = Get-Item -Path $target -ErrorAction SilentlyContinue
    # if the Csv could be found in that target
    if ($item) {
        # read it
        $item.FullName | Import-Csv
    }
} | Export-Csv 'path\to\merged.csv' -NoTypeInformation

字符串

相关问题