【发布时间】:2020-03-30 14:23:45
【问题描述】:
我有一个 CSV 文件,其中包含一堆与计算机关联的用户名。 此列表仅包含 USERNAME。
我想根据用户名附加几列名字、姓氏等。 我对 PowerShell 不太熟悉,无法在没有任何问题的情况下做到这一点。
但到目前为止,我什至无法走得更远:
$user_list = Import-Csv C:\temp\daclientsTest.csv
$user_list.foreach(
{
$SAMAccountName = $_.'USERNAME'
write-host $SAMAccountName
}
)
我没有从 $SAMAccountName 变量中得到任何信息。 有人有什么建议吗?
CSV 文件如下所示:
HOSTNAME;USERNAME
PC01259;10412;
PC01946;10319;
显然这个列表非常长并且只包含这两个变量。 所以我需要获取用户名,获取某些变量并将它们附加到新列中
编辑:如果有人想查看脚本(它可能充满了错误,但它有效,所以我很高兴):
$user_list = Import-Csv C:\temp\daclients.csv -Delimiter ';'
# Follows this format: HOSTNAME;USERNAME;
$user_list.foreach(
{
If ($_.USERNAME) {
$NewObjectList = New-Object -TypeName psobject
$Hostname = $_.HOSTNAME
$SAMAccountName = $_.USERNAME
$ADUser = Get-ADUser -Identity $SAMAccountName -Properties DisplayName,extensionAttribute2,physicalDeliveryOfficeName,title
$DisplayName = $ADUser.DisplayName
$physicalDeliveryOfficeName = $ADUser.physicalDeliveryOfficeName
$title = $ADUser.title
$EXTENSIONATTRIBUTE2 = $ADUser.extensionAttribute2
$NewObjectList | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Hostname
$NewObjectList | Add-Member -MemberType NoteProperty -Name UserName -Value $SAMAccountName
$NewObjectList | Add-Member -MemberType NoteProperty -Name DisplayName -Value $DisplayName
$NewObjectList | Add-Member -MemberType NoteProperty -Name title -Value $title
$NewObjectList | Add-Member -MemberType NoteProperty -Name ExtensionAttribute2 -Value $EXTENSIONATTRIBUTE2
$NewObjectList | Add-Member -MemberType NoteProperty -Name physicalDeliveryOfficeName -Value $physicalDeliveryOfficeName
#Create new csv-file
$NewObjectList | export-csv -Append -Path C:\temp\daclientsNEW.csv
}
}
)
【问题讨论】:
-
您需要使用
Import-Csv C:\temp\daclientsTest.csv -Delimiter ';',因为该命令使用没有-Delimiter的默认区域性列表分隔符(通常是逗号)。如果[cultureinfo]::CurrentCulture.TextInfo不是;,则需要指定。 -
啊哈!那行得通,好的,我现在试着靠近一点:)
标签: powershell csv active-directory