2017-02-23 7 views
0

私が作業している次のスクリプトのロジックを少し紛失してしまいました。Powershellカスタムオブジェクトのプロパティ値

assetlist.txt 
111111 
222222 
333333 
444444 

私はADComputerオブジェクトが存在するかどうかを確認するためにActive Directoryを照会しようとしています:私は次のように現在のテキストファイルに保存された資産番号のリストを持っています。見つかった場合は、ADComputer NameとDistinguishedNameを探しています。ここに私のコードのサンプルがあります:

$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 
} 

私は私の結果の表に見たい結果を操作することに迷っています。最終的に私は、次の行が返さ沿って何かを見たい:

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 

私は結果が表示されている場合は、「見つかりません」というメッセージがその場所に記録されている場合に対処するために、現在、IF文が欠落しています知っています。しかし、現在、私は返される正しい値を取得することさえ止まっています。

ご指摘いただければ幸いです。

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/

答えて

1

あなたのコードの近くにいるが、[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

フィードバックいただきありがとうございます。私はこれが私が探していたもののラインに最も近いと思う。 – Jason

0

あなたのGet-ADComputer$asset後に余分なtを持っていた:ここにも私はいくつかの研究のために、これまでの上に行ってきたいくつかのリンクです。あなたのオブジェクトの構築は、Select-Objectで計算されたプロパティに置き換えることができます。

$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

を使用しては間違いを指摘いただきありがとうございます。私は何が間違っていたかを見ます。 – Jason

関連する問題