我从头到尾编写自定义脚本来搜索用户,因此我可以禁用和移动它们。 (脚本完成并正常工作)
我现在要做的是创建一个易于阅读的日志,它也必须用作简单的回滚。
I.ex:
Get-Aduser -Identity test -properties SamAccountName,MemberOf,GivenName,Surname
这将返回以下内容:
DistinguishedName : CN=test,OU=OUy,OU=Lab Accounts,DC=domain,DC=org
Enabled : True
GivenName : test
Name : test
SamAccountName : test
Surname : test
Memberof : {CN=OU,OU=Norway,OU=Lab Accounts,DC=Domain,DC=org, CN=Domain Admins,CN=Users,DC=Domain,DC=org}
如果我使用:
$test2 = Get-ADUser -Identity test |
Select-Object -Property SamAccountName,GivenName,Surname,Memberof
给了我:
SamAccountName GivenName Surname Memberof
-------------- --------- ------- --------
test test test {}
我现在的问题是如何将其记录到csv / text文件中,该文件可以轻松导回以进行回滚。
我目前正在使用clixml,它在哈希表中保留了使用哈希表完成的导出。
像:
$user=@{
@{
Username=$user.samaccountname
Memberof=$user.memberOf
}
}
这允许我或多或少地使用点符号来访问存储的信息以便于回滚,但查看文件并不是那么容易阅读
当很多信息是某种项目集合时,您建议我使用哪种方法来记录我需要的信息?
我试过用PSobject探索,但我还没有掌握它。 是否有任何日志记录方法将输出到易于阅读的日志并易于用于回滚?
如果有人能够提供一个例子并指出我要进一步探索的页面,我会非常感激。
读者友好地想到这样的事情:
Username,Givenname,Surname,Memberof
Test,test2,test3,Admins;somegroup;somegroup
或
Username,Givenname,Surname,Memberof
Test,test2,test3,Admins somegroup somegroup
编辑1 以下是获取信息的代码:
Get-ADUser -Identity test -Properties SamAccountName,GivenName,Surname,Memberof |
Select-Object -Property SamAccountName,GivenName,Surname,Memberof | export-csv C:\test.txt
这是输出文件中的内容:
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
"SamAccountName","GivenName","Surname","Memberof"
"test","Mari","Hopkins","Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"
答案 0 :(得分:0)
取决于易于阅读的含义,但如何使用Export-Clixml
存储对象和Import-Clixml
来导入对象呢?
答案 1 :(得分:0)
您已经为CSV启用了此信息。为什么不使用Export-CSV
和相反的Import-CSV
$test2 | Export-CSV -Path c:\temp\backup.csv -Append
追加会将项目添加到文件中,而不会覆盖当前内容。然后,如果需要,可以使用Import-CSV
将其导回。可能有多个对象
$deprecatedAccounts = Import-CSV -Path c:\temp\backup.csv
要创建输出,您可以使用数组收集用户。
$users = @()
$users += $test2
$users | Export-CSV -Path c:\temp\backup.csv -Append
根据评论进行修改
抱歉,我一开始并不理解这个问题。您需要做的是将MemberOf
从数组扩展为字符串。
Get-ADUser test -Properties SamAccountName,GivenName,Surname,Memberof |
Select-Object SamAccountName,GivenName,Surname,@{Label="MemberOf";Expression = {$_.Memberof -join ";"}} |
Export-Csv -Path c:\temp\backup.csv -Append -NoTypeInformation
在select-object
中创建一个计算属性,将memberof扩展为以分号分隔的字符串。如果您不喜欢,-NoTypeInformation
会移除#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
行。
如果您需要将其处理回数组,可以使用简单的split
Import-CSV c:\temp\backup.csv | ForEach-Object{$_.MemberOf -split ";"}