Powershell:将 AD MachineName/UserName/IPv4Address 导出到单个 *.csv

标签 powershell csv active-directory windows-10

我有一个 OU,其中充满了默认命名的计算机。问题是这些机器已经通过 50 多个站点发出,我不知道谁有什么。下面的代码已经完成了这项工作,但我必须合并两个 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 中。

任何帮助将不胜感激。

最佳答案

我建议将 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
}

关于Powershell:将 AD MachineName/UserName/IPv4Address 导出到单个 *.csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42147700/

相关文章:

windows - 使用 Powershell 的 Invoke-Command 调用带参数的批处理文件

html - 如何使用imacros提取文本?

C# 无法将用户添加到 Active Directory。它显示错误服务器上没有这样的对象

javascript - 动态路径变量来播放音频.mp3 文件 如何? d3 javascript CoffeeScript

c++ - 从 CSV 读入模板 vector

c# - Active Directory 的用户安全标记

c# - 在 C# 中创建 AD 用户

arrays - 无法在Powershell中将字符数组写入文件

powershell - New-PSSession 使用 .NET Core 包使 Ubuntu 到 Windows 失败

.net - Docker容器未运行Windows系统调用错误