您好我正在尝试创建一个小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
正如您所看到的,文件标题保持不变,现在没有任何信息(只有2而不是11)我填写了所有信息,当只是使用AD标题导出CSV时,它具有所需的信息。 有人能帮助我吗?
BR
答案 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'
即,将新名称分配给n
(Name
)键,并在e
(Expression
)键中引用原始属性名称。