2017-02-23 2 views
0

Ich bin ein wenig verloren, die Logik für das folgende Skript, an dem ich arbeite, zu erarbeiten. Ich habe eine Liste von Anlagennummern zur Zeit in einer Textdatei gespeichert, wie folgt:Powershell Custom Object Eigenschaft Wert

assetlist.txt 
111111 
222222 
333333 
444444 

I Active Directory abfragen ist versucht, zu überprüfen, ob das ADComputer Objekt vorhanden ist. Wenn es gefunden wird, suche ich nach dem ADComputer Name und dem DistinguishedName. Hier ist ein Beispiel von meinem Code:

$assetList = Get-Content C:\assetlist.txt 

Foreach ($asset in $assetList){ 
    $adComputer = Get-ADComputer -Filter "Name -like '*$assett'" | Select-Object Name, DistinguishedName 

    $resultTable = @() 
    $result = New-Object -TypeName PSObject 
    $result | Add-Member -MemberType NoteProperty -Name AssetNumber -Value $asset 
    $result | Add-Member -MemberType NoteProperty -Name ADName -Value $adComputer.Name 
    $result | Add-Member -MemberType NoteProperty -Name OU -Value $adComputer.DistinguishedName 
    $resultTable += $result 

    $resultTable 
} 

ich in der Manipulation die Ergebnisse verloren bekomme mich in meiner Ergebnistabelle zu sehen. Letztlich würde Ich mag etwas in den folgenden Zeilen sehen zurückgegeben:

AssetNumber   ADName     OU 
-----------   ------     -- 
111111    111111.mydomain.com  CN=111111,OU=MYOU,DC=mydomain,DC=com 
222222    Not Found    Not Found 
333333    333333.mydomain.com  CN=333333,OU=MYOU,DC=mydomain,DC=com 

Ich weiß, dass ich noch eine IF-Anweisung fehle zu behandeln, wenn ein Ergebnis angezeigt wird, oder wenn eine „nicht gefunden“ Nachricht an seiner Stelle aufgezeichnet wird. Aber momentan bin ich fest und bekomme sogar die richtigen Werte zurück.

Jede Anleitung würde sehr geschätzt werden. Hier sind auch ein paar Links, die ich über bisher für einige Forschung gegangen sind:

https://technet.microsoft.com/en-us/library/ff730946.aspx https://blogs.technet.microsoft.com/josebda/2014/04/19/powershell-tips-for-building-objects-with-custom-properties-and-special-formatting/

Antwort

1

in der Nähe von Ihrem Code zu sein, aber mit [pscustomobject]

$assetList = Get-Content C:\assetlist.txt 
$resultTable = @() 

Foreach ($asset in $assetList){ 
    $adComputer = Get-ADComputer -Filter "Name -like '*$asset'" 
    If ($adComputer){ 
    $result = [pscustomobject][ordered]@{AssetNumber = $asset 
             ADName = $adComputer.Name 
             OU = $adComputer.DistinguishedName} 
    } else { 
    $result = [pscustomobject][ordered]@{AssetNumber = $asset 
             ADName = 'Not Found' 
             OU = 'Not Found'} 
    } 
    $resultTable += $result 
} 
$resultTable 
+0

Vielen Dank für Ihr Feedback. Ich denke, das war am meisten nach dem, wonach ich suchte. – Jason

0

Sie hatten ein extra t nach $asset in Ihrem Get-ADComputer. Das Erstellen Ihres Objekts kann durch berechnete Eigenschaften mit Select-Object ersetzt werden.

$assetList = Get-Content C:\assetlist.txt 

$resultTable = Foreach ($asset in $assetList){ 
    $adComputer = Get-ADComputer -Filter "Name -like '*$asset'" | 
     Select-Object @{Name = 'Asset'; Expression = {$Asset}},@{Name = 'ADName'; Expression = {$_.Name}}, @{Name = 'OU'; Expression = {$_.DistinguishedName}} 
    if ($null -eq $adComputer) { 
     $adComputer = "" | Select-Object @{Name = 'Asset'; Expression = {$Asset}},@{Name = 'ADName'; Expression = {"Not Found"}}, @{Name = 'OU'; Expression = {"Not Found"}} 
    } 
    $adComputer 
} 
+0

Danke dem Fehler, für den Hinweis auf. Ich sehe jetzt, was falsch war. – Jason

Verwandte Themen