Powershell 编辑我找到的一个脚本,导入成人列表,获取他们的信息并导出回另一个csv
我所需要的只是一个项目的帮助。我的目标是使用powershell搜索用户并报告他们所属的组 我用剧本来满足我最初的需要Powershell 编辑我找到的一个脚本,导入成人列表,获取他们的信息并导出回另一个csv,powershell,csv,Powershell,Csv,我所需要的只是一个项目的帮助。我的目标是使用powershell搜索用户并报告他们所属的组 我用剧本来满足我最初的需要 Param ( [Parameter(Mandatory=$true,ValueFromPipeLine=$true)] [Alias("ID","Users","Name")] [string[]]$User ) Begin { Try { Import-Module ActiveDirectory -ErrorAction Stop }
Param (
[Parameter(Mandatory=$true,ValueFromPipeLine=$true)]
[Alias("ID","Users","Name")]
[string[]]$User
)
Begin {
Try { Import-Module ActiveDirectory -ErrorAction Stop }
Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break }
}
Process {
ForEach ($U in $User)
{ $UN = Get-ADUser $U -Properties MemberOf
$Groups = ForEach ($Group in ($UN.MemberOf))
{ (Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{ New-Object PSObject -Property @{
Name = $UN.Name
Group = $Group
} | export-csv "c:\grouptest.csv" -append
}
}
}
我甚至可以让它导出结果。通过添加导出csv命令。这就是我遇到的一个问题。我不知道该做什么更改,从csv获取输入,然后将这些结果导出到不同的csv
因此,我想添加命令$UserList=IMPORT-CSV C:\UserList.CSV
我试过这个
Begin {
Try { Import-Module ActiveDirectory -ErrorAction Stop }
Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break }
}
Process {
$UserList=IMPORT-CSV C:\Userlist.csv
ForEach ($U in $UserList)
{ $UN = Get-ADUser $U -Properties MemberOf
$Groups = ForEach ($Group in ($UN.MemberOf))
{ (Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{ New-Object PSObject -Property @{
Name = $UN.Name
Group = $Group
} | export-csv "c:\grouptest.csv" -append
}
}
}
但我一直在犯错误。它看起来像是试图将第一个用户与所有其他用户组合在一起来命名
任何帮助都将被上诉。:) 将foreach循环的结果分配给一个变量,然后将导出Csv移动到foreach的末尾。实际上,在循环中的每次迭代都会覆盖csv
Begin {
Try { Import-Module ActiveDirectory -ErrorAction Stop }
Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break }
}
Process {
$UserList=IMPORT-CSV C:\Userlist.csv
$users = ForEach ($U in $UserList)
{ $UN = Get-ADUser $U -Properties MemberOf
$Groups = ForEach ($Group in ($UN.MemberOf))
{ (Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{ New-Object PSObject -Property @{
Name = $UN.Name
Group = $Group
}
}
}
$users | export-csv "c:\grouptest.csv" -append
}
这是为可能需要这种东西的其他人编写的工作脚本
Begin {
Try { Import-Module ActiveDirectory -ErrorAction Stop }
Catch { Write-Host "Unable to load Active Directory module, is RSAT installed?"; Break }
}
Process {
$UserList=Get-Content C:\Userlist.csv
$users = ForEach ($U in $UserList)
{ $UN = Get-ADUser $U -Properties MemberOf
$Groups = ForEach ($Group in ($UN.MemberOf))
{ (Get-ADGroup $Group).Name
}
$Groups = $Groups | Sort
ForEach ($Group in $Groups)
{ New-Object PSObject -Property @{
Name = $UN.Name
Group = $Group
}
}
}
$users | export-csv "c:\grouptest.csv" -append
}
我复制了您编辑的脚本并尝试运行它。我遇到错误Get ADUser:无法绑定参数“Identity”。无法将值“@{arnett=ahudson}”转换为类型“Microsoft.ActiveDirectory.Management.ADUser”。错误:“无法将类型为“System.Management.Automation.PSCustomObject”的“@{arnett=ahudson}”值转换为类型为“Microsoft.ActiveDirectory.Management.ADUser”。“非常有趣的是,arnett是列表中的第一个用户,ahudson是第二个用户。对于每个进行中的错误@{arnett是相同的,但=是列表中的下一个用户。Import-CSV将内容作为对象数组导入,使用第一行作为标题。如果每行上只有用户名,请更改Import CSV以获取内容。如果没有,请发布UserList.CSV的摘录。完善获取内容。稍后我将发布我的工作代码。现在,要想知道用户ID是否相同,如何将组保持在同一行中,只需添加到一个新列。不过这只是一种幻想。这给了我现在所需要的。