Jump to content

Get-ADComputer und ForEach


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

Empfohlene Beiträge

Servus, ich habe da ein kleines Verständnis Problem.

Ich wähle eine OU aus (GUI) und übergebe die an mein Script.

Die Variable $OU bzw. $OU.DistinguishedName liefert mir die OU. Nun möchte ich jeden PC Namen der OU über den SCCM abfragen und mir die MAC Adresse ausgeben lassen. (Später wird das in mein Wake On Lan Script integriert!)

Die SCCM Abfrage funktioniert! Ich bekomme die MAC zurück wenn ich einen PC Namen manuell mitgebe.

 Allerdings funktioniert die Schleife nicht. 

$OU = Choose-ADOrganizationalUnit
(Get-ADComputer -Filter * -SearchBase $Ou.DistinguishedName).Name | ForEach { 
$ComputerName = $_.Name 
$MACADRESS = (Gwmi -Name Root\SMS\Site_XXX -cl SMS_R_System -Comp XXXXXXXX | where {$_.Name -eq "$ComputerName"}).MACAddresses 
Write-Host $MACADRESS
} 

Wäre wirklich toll wenn hier jemand noch eine Idee hätte.

Viele Grüße

bearbeitet von marcx2
Link zu diesem Kommentar

Ich glaub das geht einfacher:

$OU = Choose-ADOrganizationalUnit
$SCCMSource = Get-CimInstance -Namespace Root\SMS\Site_XXX -ClassName SMS_R_System -ComputerName XXXXXXX | Select-Object -Property Name,MacAddresses
$ADSource = Get-ADComputer -Filter * -SearchBase $Ou.DistinguishedName | Select-Object -Property Name
Compare-Object -ReferenceObject $SCCMSource -DifferenceObject $ADSource -Property Name -PassThru -IncludeEqual -ExcludeDifferent

bearbeitet von BOfH_666
Link zu diesem Kommentar

Wow, ich danke dir vielmals. So geht es natürlich auch! 

Ich habe es jetzt folgendermaßen gelöst:

 

Schritt 1: Ich will ja nur die MAC:

$MACADDRESS = (Compare-Object -ReferenceObject $SCCMSource -DifferenceObject $ADSource -Property Name -PassThru -IncludeEqual -ExcludeDifferent).MacAddresses

Schritt 2:

ForEach ($ADSource in $MACADDRESS) {
 
$s = New-PSSession –ComputerName blabla
Invoke-command -session $s -Scriptblock {import-module C:\PSScripts\Send-WOL.ps1}
Invoke-Command -Session $s -ArgumentList $MACADDRESS -Scriptblock {param($MACADDRESS);Send-WOL -mac $MACADDRESS -ip 192.168.xxx.xxx}
$s | Remove-PSSession
}

Falls sich jemand fragt was das soll. Ich kann über Standort grenzen hinweg keine WOL Broadcasts versenden. Deshalb such ich mir den jeweiligen Standortserver raus, öffne eine Remoteshell auf diesem und lasse auch von diesem den WOL Boroadcast schicken!

 

Nochmals vielen Dank für den Denkanstoss @BOfH_666

 

 

Schönes WE


Kleine Frage noch, wie kann ich mir von dem Ergebnis diese Abfrage

Compare-Object -ReferenceObject $SCCMSource -DifferenceObject $ADSource -Property Name -PassThru -IncludeEqual -ExcludeDifferent 

und ich 2 Werte wie den Namen und die Mac zurück bekomme für beide Werte eine Variable anlegen? Muss ich das 2 mal ausführen?

also so?

$MAC = (Compare-Object -ReferenceObject $SCCMSource -DifferenceObject $ADSource -Property Name -PassThru -IncludeEqual -ExcludeDifferent).MacAddresses
$NAME = (Compare-Object -ReferenceObject $SCCMSource -DifferenceObject $ADSource -Property Name -PassThru -IncludeEqual -ExcludeDifferent).Name

oder geht das einfacher? :)

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