Powershell, Variablen passend formatieren? / Ausgabe weiter verarbeiten?

Nemac

Enthusiast
Thread Starter
Mitglied seit
03.04.2010
Beiträge
1.536
Ort
17033
Hallo ihrs ;)

Ich bin schon öfter in PS drüber gestolpert, wenn ich mir über einen Befehl (Get-ADuser, Get-ADComputer....) Daten besorge, dass ich die dann nicht weiter verarbeiten kann. zZ behelfe ich mir mit einem Umweg über eine Datei. aber DAS kann ja nicht die Lösung sein ;(

Ich habe gerade wieder ein Beispiel und hoffe auf Tipps:
Normalerweise sollen die Rechner lokal das Servergespeicherte Profil beim abmelden löschen. Das hat leider nicht immer geklappt, darum das Script, das den Inhalt der Profilordner auflisten soll. Das funktioniert auch soweit wie wir das haben wollen und dient nur als Beispiel.

Code:
Import-Module activedirectory
$name = Read-Host "Welche Rechner?"
$A=Get-ADComputer -Filter "Name -like '$name*'" |FT -HideTableHeaders Name
$B=$A.trim() 
$B > C:\D\PCss.txt
cls
$Rechner = Get-Content C:\D\PCss.txt | where {$_ -ne ""} 
foreach ($Rechner in  $Rechner)
 {
   if (test-connection -computername $Rechner -quiet) 
   {   
        Get-ChildItem \\$Rechner\C$\users\ | Sort-Object LastWriteTime -Descending
        $LastBootUpTime = Get-WmiObject Win32_OperatingSystem -Comp $Rechner | Select -Exp LastBootUpTime
        $Date=[System.Management.ManagementDateTimeConverter]::ToDateTime($LastBootUpTime) 
        Write-host ""
        Write-host Last Reboot am $Date
               
   } 
 }

Was muss ich mit $A machen, damit ich es direkt weiter benutzen könnte?
$A | Get-Member TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatStartData ;(

Umweg über |Out-String habe ich versucht, klappt aber nicht, obwohl IMHO in $Rechner die Daten richtig stehen:

Code:
$name = Read-Host "Welche Rechner?"
$Computer=Get-ADComputer -Filter "Name -like '$name*'" |FT -HideTableHeaders Name  
$Rechner=$Computer |out-String
foreach ($Rechner in  $Rechner)
.....

Hilfe ;(
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hoi,

naja, Du machst es Dir ja auch unnötig schwer, denn

Code:
"[COLOR=#000000]$A=Get-ADComputer -Filter "Name -like '$name*'" |FT -HideTableHeaders Name"[/COLOR]


macht ja auch keinen Sinn wenn Du es weiterverarbeiten willst - mit ft (format-table) bringst Du es in eine für die Bildschirmausgabe übersichtliche Tabellenform.
Das heißt schön menschenlesbar aber eben blöd zum Weiterverarbeiten.

Vielleicht versteh' ich die Frage auch nicht aber wenn Du nur

Code:
"[COLOR=#000000]$A=Get-ADComputer -Filter "Name -like '$name*'" |FT -HideTableHeaders Name"[/COLOR]


bekommst Du ein ADComputer Objekt oder ein Array aus solchen. Du kannst dann wunderbar auf dessen Member zugreifen, z.B.

Code:
foreach ($adpc in $A){
    $adpc.Name # Der Name des Computers
}

Bzw. um Deine Frage zu beantworten - einfach nicht als Tabelle formatieren sondern so belassen wie es ist. ;)
 
Zuletzt bearbeitet:
*hmpf*
Das mit irgendwas.name kannte ich leider noch nicht. Das hilft mir sehr weiter. Danke.
Ist ja doch ganz Einfach, wenn man weiß wie ;)

zum FT: Ich hatte gehofft, wenn in der Variablen nur das steh was ich brauche, es leichter wird die Daten weiter zu nutzen :(
 
Foreach-Object (Kurzform: Foreach oder %) und ggf. auch Select-Object (Kurzform: select oder ?) sind oft die hilfreichsten und einfachsten Werkzeuge für sowas.
Ab PowerShell Version 3.0 kannst Du Dir auch den manuellen Import des AD-Moduls sparen, das macht PowerShell selbst.

Get-ADComputer gibt als Ergebnis ein Liste aller Computer-Objekte zurück, die im AD zur Suchanfrage gefunden werden. Diese kannst du direkt an Foreach-Object weitergeben ("pipen") und das war's.

In der PowerShell ist erst einmal grundlegend alles ein Objekt (.NET), welches via Pipeline "|" an viele andere Befehle weitergegeben werden kann.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh