Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 查找已登录用户并将所有信息输出到CSV的问题_Powershell - Fatal编程技术网

Powershell 查找已登录用户并将所有信息输出到CSV的问题

Powershell 查找已登录用户并将所有信息输出到CSV的问题,powershell,Powershell,我尝试做的基本工作是获取一个csv,其中包含“计算机名”、“操作系统”、“持续登录”、“用户”列,然后查找用户显示名称和office,并将其导出到一个新的csv,其中包含所有原始信息和新的。我已经成功地从广告中获取信息,并将该信息导出到单独的csv。但我还没有找到一种方法,可以在一个CSV中获取所有信息,如果在广告中找不到用户,也不能在其中空白 这是我目前掌握的代码: $computers = Import-Csv C:\Temp\inputfile.csv $computers | ForE

我尝试做的基本工作是获取一个csv,其中包含“计算机名”、“操作系统”、“持续登录”、“用户”列,然后查找用户显示名称和office,并将其导出到一个新的csv,其中包含所有原始信息和新的。我已经成功地从广告中获取信息,并将该信息导出到单独的csv。但我还没有找到一种方法,可以在一个CSV中获取所有信息,如果在广告中找不到用户,也不能在其中空白

这是我目前掌握的代码:

$computers = Import-Csv C:\Temp\inputfile.csv

$computers | ForEach-Object {
    $user = $_.Users
    if ($user -ne "N/A" -or $user -ne $null -or $user -ne '')
    {
        Get-ADUser -ldapfilter "(samaccountname=$user)" -Property name, office | Select-Object -Property Name, Office
    }
} | Export-Csv -Path C:\Temp\outputfile.csv -NoTypeInformation
我得到的是一个输出文件,其中显示了所有人的姓名和办公室,除了那些出错的人,但我无法告诉他们去了哪台计算机,因为这些信息不在csv中


我查看了多个网站以获取信息,我知道这可能是一个简单的解决方案,但Powershell对我来说是新的,我在过去6个小时一直在研究,所以我想寻求一些帮助。谢谢。

我会选择以下方式:

Import-Csv C:\Temp\inputfile.csv | ForEach-Object {

    if ($_.Users -notin ('N/A', $null, ''))
    {        
        $AdUser = Get-ADUser -ldapfilter "(samaccountname=$($_.Users))" -Property Name, Office

        $_ | Add-Member -NotePropertyName 'DisplayName' -NotePropertyValue $AdUser.Name
        $_ | Add-Member -NotePropertyName 'Office'      -NotePropertyValue $AdUser.Office
    }

    $_

} | Export-Csv -Path C:\Temp\outputfile.csv -NoTypeInformation

这将把显示名称和办公室信息合并到每个计算机记录中。

在foreach中放一个try/catch,这样它就可以在出错的情况下处理迭代。这是处理循环内部异常的方法。感谢您将它们合并到同一个文件中,效果非常好。我非常感谢您的帮助!