Jump to content

PS: select Expression


Direkt zur Lösung Gelöst von Kuddel071089,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

 

ich bin gerade dabei eine Asuwertung alle Mitglieder von bestimmten Verzeichnissen zu erstellen.

 

Die Auflistung aller Mitglieder funtkioniert auch.

 

Jetzt möchte ich am Ende der Datei noch den Verzeichnisverantwortlichen anfügen, der bei uns in der Berechtogungsgruppe im Attribut "info" geplfegt wird.

 

Dazu habe ich mir also ein Schleife erstellt:

Get-ADGroup $gruppe.SamAccountName -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, @{Expression={$gruppe.info};Label="Verantwortlicher"} | Out-File "$outputFile" -Append

}

}

Damit der Endanwender diese Auswertung auch versteht, wurde aus SammAccountName "Verzeichnissname (ohne -RW)" als Tabellenkopf.

Jetzt möchte ich gern aus info "Verantwortlicher" machen.

Funt auch, nur leider werden die Werte aus den info Feldern nicht exportiert.

 

So funkitoniert es, ist aber ein wenig unschön

Get-ADGroup $gruppe.SamAccountName -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, info | Out-File "$outputFile" -Append

}

}

Ich hoffe jmd hat eine Idee für mich.

Danke schon einmal


Ich habe es jetzt hinbekommen, 2 Spalten um zu benennen.

 

ForEach ($Gruppe in $Gruppen){

if($gruppe.SamAccountName -like "*-RW"){
#Get-ADGroup $gruppe.Name -Properties * | Select @{Expression={$gruppe.SamAccountName};Label="Verzeichnissname (ohne -RW)"}, @{Expression={$gruppe.info};Label="Verantwortlicher"} | Out-File "$outputFile" -Append
Get-ADGroup $gruppe.Name -Properties * | Format-Table Name,

@{
    Label="Verzeichnisname (ohne -RW)"
    Expression={(Get-ADGroup $gruppe.Name -Properties SamAccountName | Select $($_.SamAccountName))}
    },
@{
    Label="Verantwortlicher"
    Expression={(Get-ADGroup $gruppe.SamAccountName -Properties info | Select $($_.info))}
} | Out-File "$outputFile" -Append
}
}

 

Leider habe ich jetzt noch 2 Probleme:

 

1.Damit dies Ausgabe funktioniert muss ich zwingend eine 3 Spalte mit ausgeben, wie zb SName. Lasse ich diese Weg, werden die anderen Spalten nicht gefüllt.

2.Wenn die Spalten gefüllt sind, sind da mehr als die gewünschten Attribute eingetragen:

Beispiel des Verantwortlichen:

@{Mustermann, Max=Microsoft.ActiveDirectory.M...

 

Eingeltich soll in der Spalter Verantwortlicher nur der Eintrag aus dem Infofeld stehen "Maustermann, Max"

Geschrieben

Hallo,

Ich benutze in solchen Fällen gerne das PSObject

 

etwa so (ungetestet)

Foreach ($gruppe in $gruppen) {
  [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher,LetzterZugriff
  $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName)
  $OutPut.Verantwortlicher = $($gruppe.info)
  $OutPut.LetzterZugriff = $($gruppe.LastAccessTime)
  
 $AllOutPut += $OutPut
}#Foreach
 
$AllOutPut | Format-Table * -auto

Damit hat man ein flexibles und übersichtliches  Array in der Hand.

 

Bei Bedarf kann man ja die Table noch anpassen (width, etc)
https://technet.microsoft.com/de-de/library/ee692794.aspx

Geschrieben (bearbeitet)

Hallo,

Ich benutze in solchen Fällen gerne das PSObject

 

etwa so (ungetestet)

Foreach ($gruppe in $gruppen) {
  [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher,LetzterZugriff
  $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName)
  $OutPut.Verantwortlicher = $($gruppe.info)
  $OutPut.LetzterZugriff = $($gruppe.LastAccessTime)
  
 $AllOutPut += $OutPut
}#Foreach
 
$AllOutPut | Format-Table * -auto

Damit hat man ein flexibles und übersichtliches  Array in der Hand.

 

Bei Bedarf kann man ja die Table noch anpassen (width, etc)

https://technet.microsoft.com/de-de/library/ee692794.aspx

 

Ich habe es fast 1:1 übernommen.

Ich hab einen Filter nach *-RW (Schreibrechtegruppen) hinzugefügt, sonst wird der Verantworliche ja doppel für -R und -RW aufgeführt

Die Spalte "Letzter Zugriff" benötige ich nicht.

Der Output geht mit in meine txt Datei

Foreach ($gruppe in $gruppen) {
if($gruppe.SamAccountName -like "*-RW"){
  [PsObject]$OutPut = "" | Select-Object Verzeichnisname_ohne_RW,Verantwortlicher
  $OutPut.Verzeichnisname_ohne_RW = $($gruppe.SamAccountName)
  $OutPut.Verantwortlicher = $($gruppe.info)
 
  $OutPut | Format-Table * | Out-File "$outputFile" -Append

}}

Funktioniert jetzt wie es soll. Probieren geht über studieren ^^

 

Wenn man jetzt noch irgendwie das -RW am Ende der Gruppennamen entfernen kann und die erste Spalte somit direkt Verzeichnisnamen nennen kann, wäre ich wunschlos glücklich.

 

Aber vielen Dank schon einmal :-) #freu

bearbeitet von Kuddel071089
Geschrieben

du machst bei jedem Schleifendurchlauf einen neuen Filezugriff mit Öffnen und Schließen. Bei relativ wenigen Gruppen ist es kaum merkbar, aber bei vielen Schleifendurchläufen wird es Performance kosten.

Da ist es besser erst alle Daten in ein Object  zwischenzuspeichern ($AllOutPut += $OutPut) und am Ende alle Einträge $AllOutPut zusammen in einem einzigen Vorgang abzuspeichern.

$AllOutPut | Format-Table * -auto | Out-File "$outputFile"

 

auch

$AllOutPut | export-csv

oder

$AllOutPut | export-clixml

sind so einfach durchführbar

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...