Jump to content

Powershell und Programmausgaben


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

Empfohlene Beiträge

Hi paddy82,

 

ok, ich verstehe was Du machen möchtest. Dafür brauchst Du das "Invoke-Expression" nicht. Du kannst theoretisch die Abfrage einfach an eine Variable übergeben - diese führt die Abfrage dann aus und übergibt die entsprechenden Werte dann der gewünschten Funktion bzw. dem gewünschten CMDlet. Also in der Form:

 

$meine_variable = dsquery computer -name Test*

 

ABER: Leider geht es nicht so, wie Du Dir das vorgestellt hast. ;)

 

Das Problem ist, daß die WMI-Abfrage ein anderes Format erwartet, als Du es über dsquery bekommst. Dort wird nämlich der DN der Computerkonten zurückgegeben. Eine Weiterleitung an DSGET bringt Dich auch nur einen Schritt weiter, da Du bei einer Abfrage nach SAMIDs die Computernamen mit "$" angezeigt bekommst. Das müßte dann noch gefiltert werden.

 

Daher die Frage: Willst Du das Problem an sich lösen oder willst Du PowerShell lernen? :)

Je nachdem sieht die Antwort auf die Fragestellung nämlich unter Umständen vollkommen anders aus. ;)

 

Viele Grüße

olc

Link zu diesem Kommentar

erstmal vielen Dank für die Zeit die Du Dir nimmst :)

 

Das Skript soll dann auch Produktiv eingesetzt werden (nach genügend Einarbeitung).

 

Nunmal zu meinem Verständnis:

 

ich kann die Ausgabe dann in einer Variable (Array) setzen. Diese könnte ich dann später weiterverwenden oder?

 

Würde doch auch eine Schleife gehen nach dem Motto:

 

$domComputers = dsquery computer -name test* -o rdn

for each $domComputers

gwmi win32_services -computer $domComputers

next

 

??

Link zu diesem Kommentar

Hallo,

 

ja, das sollte so funktionieren, wenn Du bei "win32_services" das "s" wegläßt. ;).

Außerdem mußt Du die Syntax an die PowerShell anpassen und nicht VBScript nutzen. ;)

 

Probiere einmal (ungetestet):

$domComputers = dsquery computer -name test* -o rdn
ForEach ($variable in $domComputers) {
Get-WMIObject win32_service -computer $variable
}

 

Der "saubere" Weg wäre in diesem Fall jedoch, die Objekte direkt per LDAP / ADSI aus der AD zu lesen, da sie dem Array dann nicht als normale Strings, sondern als Objekte zurückgegeben werden würden. Aber Du schriebst, daß Du das später testen möchtest. :)

 

Viele Grüße

olc

Link zu diesem Kommentar

Hallo,

 

ich habe das oben aufgeführte Script nach meinem Post einmal getestet: Es läuft leider nicht korrekt. Offensichtlich hat die PowerShell ein Problem damit, daß der Übergabewert für das WMI-Query "-Computer" kein Objekt, sondern ein String ist. Es wird jedenfall nicht korrekt verarbeitet.

 

Aber was solls - ich bin zwar überhaupt kein "Scripting Guy", aber eine Lösung sollte schon her. Daher nach einigen Tests folgender Vorschlag:

 

$category = "(objectcategory=computer)"
$AD = [ADSI]"LDAP://DC=testdom,DC=intern"
$properties = "name"

$search = New-Object System.DirectoryServices.DirectorySearcher($AD,$category)
$search.PageSize = 1000
$search.PropertiesToLoad.Add($properties)


$result = $search.Findall()

foreach ($res in $result) {
$computername = $res.properties.name
write-host
write-host
write-host $computername
write-host ========================================
Get-WMIObject win32_service -computer $Computername -errorAction SilentlyContinue | Format-Table -auto
}

 

Bin für jeden Verbesserungsvorschlag offen. ;)

 

Viele Grüße

olc

Link zu diesem Kommentar

Hallo,

 

na dann schauen wir einmal, ob Dir das Script zusagt. ;)

 

Eine komplette Referenz kenne ich leider nicht - jedoch ist folgendes Dokument ein guter Startpunkt: Windows PowerShell Quick Reference

 

Weiterhin bietet Technet einen eigenen PowerShell Bereich und es gibt massenweise Blogs etc.

 

Die PowerShell CMDlets "Get-Help" und "Get-Command" sind auch recht hilfreich. ;)

 

Viele Grüße

olc

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...