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

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"

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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
Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...