2017-02-09 14 views
2

У меня есть OU, который по умолчанию имеет машины по умолчанию. Проблема в том, что эти машины уже отправлены через более 50 сайтов, и я не знаю, кто у кого есть. Код ниже, выполнил эту работу, но мне нужно объединить два CSV, которые не так уж сложны, но это шаг, который я не думаю, что у есть.Powershell: экспортирует имя_компьютера AD/имя_пользователя/IPv4Address в один * .csv

Вот мой текущий код (работа с два CSV в):

###Creates temp-function to get the current user logged into machine### 

function Get-LoggedOnUser { 
    [CmdletBinding()] 
    param(
     [Parameter()] 
     [ValidateScript({ Test-Connection -ComputerName $_ -Quiet -Count 1 })] 
     [ValidateNotNullOrEmpty()] 
     [string[]]$ComputerName = $env:COMPUTERNAME 
    ) 

    foreach ($comp in $ComputerName) { 
     $output = @{ 'ComputerName' = $comp } 
     $output.UserName = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).UserName 
     [PSCustomObject]$output 
    } 
} 

###Change the -SearchBase parameters to the appropriate container.####### 

$computer = Get-ADComputer -Filter * -SearchBase "OU=IMAGE,OU=WORKSTATIONS,DC=AD,DC=XXX,DC=US" | 
    Sort-Object Name 

$allinfo = @() 
foreach ($machine in $computer.Name) { 
    $Array = "" | Select-Object Machine 
    $array.Machine = $machine 
    Get-LoggedOnUser -ComputerName $machine | 
     Export-Csv "C:\Users\XXX\Desktop\loggedOnUsers.csv" -NoTypeInformation -Append 

    Get-LoggedOnUser -ComputerName $machine | 
     Test-Connection -Count 1 | 
     Select-Object @{ n = "Machine"; e = { $_.Address } }, Ipv4Address | 
     Export-Csv "C:\Users\XXXX\Desktop\ips.csv" -NoTypeInformation -Append 
} 

Я редактировал код с XXX в некоторых местах, я не подвергаю сомнению эти области. Кажется, я не могу закончить код, чтобы объединиться в один CSV.

Любая помощь была бы очень признательна.

ответ

2

Я хотел бы предложить добавить IP-адрес для объекта функции, как это:

function Get-LoggedOnUser { 
    [CmdletBinding()] 
    param(
     [Parameter()] 
     [ValidateScript({ Test-Connection -ComputerName $_ -Quiet -Count 1})] 
     [ValidateNotNullOrEmpty()] 
     [string[]]$ComputerName = $env:COMPUTERNAME 
    ) 

    foreach ($comp in $ComputerName) { 
     $output = @{ 'ComputerName' = $comp } 
     $output.UserName = (Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp).UserName 
     $output.Ipv4Address = (Test-Connection -ComputerName $machine -Count 1 | Select-Object -ExpandProperty Ipv4Address) 
     [PSCustomObject]$output 
    } 
} 

###Change the -SearchBase parameters to the appropriate container.####### 

$computer = Get-ADComputer -Filter * -SearchBase "OU=IMAGE,OU=WORKSTATIONS,DC=AD,DC=XXX,DC=US" | 
Sort-Object Name 

$allinfo = @() 
foreach ($machine in $computer.Name) { 
    $Array = "" | Select-Object Machine 
    $array.Machine = $machine 

Get-LoggedOnUser -ComputerName $machine | Export-Csv "C:\Users\XXX\Desktop\\AllInOne.csv" -NoTypeInformation -Append 
} 
+0

Спасибо так много! Это именно то, чего мне не хватало. Я попытался создать переменную в неправильном месте! – Reeves