Powershell在导出之前以CSV格式编辑标题

时间:2018-02-15 01:39:07

标签: powershell csv active-directory office365

您好我正在尝试创建一个小PS脚本,从一个OU和一些Headers获取用户,然后在保存之前编辑标题(以便我可以将它们导入Office365)。

$Select = @{
'Filter' = '*'
'searchbase'='OU=TESTOU,DC=corp,DC=test,DC=com'
'Properties'= @("GivenName","SurName","DisplayName","samaccountname","Streetaddress","state","City","PostalCode","Country","Title","Company","Department","Office","telePhonenumber")
}

Get-ADUser @select|Select-Object -Property $propertyTranslation|export-csv c:\Test0218.csv -notype

$propertyTranslation = @(
    @{ Name = 'UserPrincipalName'; Expression = { $_.'User Name' } }
    @{ Name = 'GivenName';   Expression = { $_.'First Name'  } }
    @{ Name = 'SurName';   Expression = { $_.'Last Name'  } }
    @{ Name = 'DisplayName';   Expression = { $_.'Display Name'  } }
    @{ Name = 'Title';   Expression = { $_.'Job Title'  } }
    @{ Name = 'Department';   Expression = { $_.'Department'  } }
    @{ Name = 'telePhonenumber';   Expression = { $_.'Office Phone'  } }
    @{ Name = 'StreetAddress';   Expression = { $_.'Address'  } }
    @{ Name = 'City';   Expression = { $_.'City'  } }
    @{ Name = 'PostalCode';   Expression = { $_.'Zip or Postal Code'  } }
    @{ Name = 'Country';   Expression = { $_.'Country or Region'  } }
)

(Import-Csv -Path 'c:\Test0218.csv') |
Select-Object -Property $propertyTranslation |
Export-Csv c:\Test0230.csv -NoTypeInformation

这不起作用,因为文件的争论是垃圾:( enter image description here

正如您所看到的,文件标题保持不变,现在没有任何信息(只有2而不是11)我填写了所有信息,当只是使用AD标题导出CSV时,它具有所需的信息。 有人能帮助我吗?

BR

2 个答案:

答案 0 :(得分:0)

我会在ISE或VSCode中对此进行调试并展开您的管道以协助您完成这项工作。

作为对您尝试做的事情的模拟,我使用一些预定义的csv数据创建了以下内容,我发现这些数据在调试任何与csv相关的工作流程时都很有用。

$csvdata = @'
"Header One", "Header Two"
foo, bar
baz, boo
'@

$xlate = @(
    @{Name = 'H1'; Expression = {$_.'Header One'} }
    @{Name = 'H2'; Expression = {$_.'Header Two'} }
)

$csv = ConvertFrom-Csv $csvdata

$newcsv = $csv | Select -Property $xlate | ConvertTo-Csv -NoTypeInformation

"csv----------------------"
$csv

"newcsv----------------------"
$newcsv

给出:

csv----------------------
Header One Header Two
---------- ----------
foo        bar       
baz        boo       
newcsv----------------------
"H1","H2"
"foo","bar"
"baz","boo"

答案 1 :(得分:0)

看起来您的财产名称翻译向后:

  • 您提供原始属性已有的新属性名称(例如GivenName

  • 您尝试使用所拥有的名称(例如First Name)来访问输入对象上的属性。

如果您想 重命名给定输入对象的属性,请使用以下方法:

$co = [pscustomobject] @{ one = 1 } # sample input object

$co | Select-Object @{ n = 'eins'; e = 'one' } # rename 'one' to 'eins'

即,将新名称分配给nName)键,并在eExpression)键中引用原始属性名称。