marcx2 10 Geschrieben 10. November 2017 Melden Geschrieben 10. November 2017 (bearbeitet) 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 10. November 2017 von marcx2
BOfH_666 586 Geschrieben 10. November 2017 Melden Geschrieben 10. November 2017 (bearbeitet) 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 10. November 2017 von BOfH_666
marcx2 10 Geschrieben 10. November 2017 Autor Melden Geschrieben 10. November 2017 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? :)
Beste Lösung BOfH_666 586 Geschrieben 10. November 2017 Beste Lösung Melden Geschrieben 10. November 2017 (bearbeitet) Wenn Du das Ergebnis einer Variable zuweist, z.B. $Result, dann kannst Du mittels Subexpressions auf die einzelenen Properties zugreifen - also $Result.Name oder $Result.MacAddresses bearbeitet 10. November 2017 von BOfH_666 1
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden