2017-09-29 155 views
0

我有几个组,需要将结果导出到一个文件中。不过,我尝试了方法,但无法实现。如果我使用$group则格式不正确。我想仍然保持选择结果,如名称和计数。我应该添加什么代码才能使它工作?写输出格式

$group2 | Get-ADGroupMember -Recursive | 
    Where-Object { $_.objectClass -eq "User" } | 
    Select-Object -Unique | 
    Get-ADUser -Properties canonicalName | 
    Select-Object @{Name='container';Expression={($_.canonicalname -split '/')[2,3]}}, Count | 
    Group-Object container 
    Select Name, Count 

$group3 | Get-ADGroupMember -Recursive | 
    Where-Object { $_.objectClass -eq "User" } | 
    Select-Object -Unique | 
    Get-ADUser -Properties canonicalName | 
    Select-Object @{Name='container';Expression={($_.canonicalname -split '/')[2,3]}}, Count | 
    Group-Object container 
    Select Name, Count 

$group4 | Get-ADGroupMember -Recursive | 
    Where-Object { $_.objectClass -eq "User" } | 
    Select-Object -Unique | 
    Get-ADUser -Properties canonicalName | 
    Select-Object @{Name='container';Expression={($_.canonicalname -split '/')[2,3]}}, Count | 
    Group-Object container 
    Select Name, Count 

Write-Output User, $Group2, $group3, Group4 | 
    Out-File -FilePath C:\Temp\Group_User$timestamp.csv -Append 
+0

你在得到什么?.....你想得到什么? – ArcSet

+0

您不会将管线的结果存储在任何地方.. – TessellatingHeckler

+0

我该怎么做? – Power988

回答

0

你的问题不清楚你想达到什么目的。你应该给我们几行所需的输出。 然后人们现在会是你想要的。 话虽如此,作为一个脚本编写者,您想要尝试使代码执行传输,而不是一遍又一遍地编写相同的代码。 因此,对于你,你应该看看一个foreach循环。 通过这种方式,您的代码可以多次重复,因为您有组。

$groups = @("group1","group2") 
$report = @() 
foreach ($group in $groups){ 
$report += $group | Get-ADGroupMember -Recursive | 
     Where-Object { $_.objectClass -eq "User" } | 
     Select-Object -Unique | 
     Get-ADUser -Properties Name,canonicalname | 
     Select Name, canonicalname 
} 

$report