Powershell 更改哈希值表中列之间的列标题
我有一个表变量,可以像csv文件一样处理Powershell 更改哈希值表中列之间的列标题,powershell,powershell-3.0,Powershell,Powershell 3.0,我有一个表变量,可以像csv文件一样处理 "SamAccountName","lastLogonTimestamp","AccountExpires","givenname","sn","distinguishedName","employeeNumber","employeeID","Description","extensionattribute8","userAccountControl" "value1","value1","value1","value1","value1","valu
"SamAccountName","lastLogonTimestamp","AccountExpires","givenname","sn","distinguishedName","employeeNumber","employeeID","Description","extensionattribute8","userAccountControl"
"value1","value1","value1","value1","value1","value1","value1","value1","value1","value1","value1"
"value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2"
"value3","value3","value3","value3","value3","value3","value3","value3","value3","value3","value3"
我想做的是将两个标题名givenname
更改为FirstName
,将sn
更改为LastName
注意:我还想更改lastLogonTimestamp
和AccountExpires
的值,但我已经有了执行此操作的工作代码。此代码如下所示
$listOfBadDateValues = '9223372036854775807', '9223372036854770000', '0'
$maxDateValue = '12/31/1600 5:00 PM'
$tableFixed = $table | % {
if ($_.lastLogonTimestamp) {
$_.lastLogonTimestamp = ([datetime]::FromFileTime($_.lastLogonTimestamp)).ToString('g')
}; if (($_.AccountExpires) -and ($listOfBadDateValues -contains $_.AccountExpires)) {
$_.AccountExpires = $null
} else {
if (([datetime]::FromFileTime($_.AccountExpires)).ToString('g') -eq $maxDateValue) {
$_.AccountExpires = $null
} Else {
$_.AccountExpires = ([datetime]::FromFileTime($_.AccountExpires)).ToString('g')
}
};$_}
如何编写代码,以便将两个标题名更改为FirstName和LastName?您只需将对象导入select语句,以“别名”属性名即可
$yourObject | Select-Object -Property @{N='MyNewName1';E={$_.ExistingName1}}, @{N='MyNewName2';E={$_.ExistingName2}}
最直接的方法是使用您想要的名称构造一个新对象,而不是返回
$\uu
。用这种方法,我必须将对象附加到表中,然后删除其他对象。然后对列重新排序。我认为一个更简单的方法是导出到csv文件,并在第一行使用-replace。它也不是最干净的,但我不必处理新建、删除旧列和重新排序列的问题。我希望有一种简单的方法来访问和使用-替换表中的这两个字符串,但我想不是。您可以使用Select对象完成所有这些操作-更改值、重新排列列等。但是,如果希望它简单明了,您可能应该从CSV导入对象,只需使用新的对象类型PSObject-Property@{…并将它们附加到新的$CollectionFobjects。