marcx2 10 Geschrieben 10. November 2017 Melden Teilen 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 10. November 2017 Melden Teilen 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 Zitieren Link zu diesem Kommentar
marcx2 10 Geschrieben 10. November 2017 Autor Melden Teilen 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? :) Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 10. November 2017 Beste Lösung Melden Teilen 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.