2017-04-07 11 views
0

次のスクリプトを使用して、ユーザーとプロキシアドレス値のスプレッドシート(​​文字列と一致する)をレコードとして作成しています。値を戻すことができます。複数の属性に追加されたProxyaddressが個別の行に表示されない

ユーザーごとに1つのエントリしかない場合、スクリプトはうまく機能しますが、ユーザーに複数のエントリがある場合に問題が発生します。問題は、元の値に戻そうとすると、属性エディタで表示したときに、各プロキシアドレスの別々の行ではなく、プロキシアドレスがすべて1行に表示されることです。フォールトがコレクションスクリプトにあるのか、私が値を設定するために使用しているスクリプトであるのか分かりません。

$csv = import-csv "Proxyaddresses_Domain_1201_05-04-2017.csv" 
$domain = [system.environment]::UserDomainName 
$attribute = "Proxyaddresses" 
foreach ($line in $csv){ 
$user = $line.samaccountname 
$proxyaddresses = $line.proxyaddresses 
Get-aduser $User -server $domain -Properties $attribute | Set-ADUser -add 
@{$attribute = $proxyaddresses} -server $domain 
} 

私は、このような収集スクリプトのようにいろいろなことを試してみました:バック、私は次のことを実行している元の状態に値を返すに

$entry = "*test.com" 
$users = get-content "Testusers.txt" 
$date = get-date 
$mydata = @() 
$domain = [system.environment]::UserDomainName 
$attribute = "Proxyaddresses" 
$report = "{0}_{1}_{2:HHmm_dd-MM-yyyy}.txt" -f $attribute,$domain,$date 
$px = $users | Get-ADUser -Properties proxyaddresses -server $domain 

foreach ($user in $px){ 
if ($user.proxyaddresses -like $entry){ 
    $name = $user.samaccountname 
    $proxyaddresses = $user.proxyaddresses -like $entry 
    $mydata += New-Object PSObject -Property @{ 
     Samaccountname = $name 
     Proxyaddresses = $proxyaddresses 
    } 
    } 
} 
$mydata | select samaccountname,@{ l = "Proxyaddresses"; e = {$_.Proxyaddresses } }| export-csv "$PWD\$report" -NoTypeInformation -Append 

:私は次のことを実行している値を収集するために、

$proxyaddresses = $line.proxyaddresses -join "," 

は、私はまた、値を設定するために使用するスクリプトで同じ戦術を試してみましたが、代わりに新しい行を作成するには、同じ線V上のエントリ間のスペースを削除しますAD属性エディタを介して表示されます。

は、私はまた、これが問題

$proxyaddresses = ([Microsoft.ActiveDirectory.Management.ADPropertyValueCollection]$user.proxyaddresses -like $entry 

HELPを解決しませんでしたが、次へ

$proxyaddresses = $user.proxyaddresses -like $entry 

を変更しようとしました!

答えて

1

あなたがデータをエクスポートしている場合、*区切られた文字列にADPropertyValueCollectionを変換します。この

select samaccountname,@{Name="Proxyaddresses";Expression={$_.proxyaddresses -join "*"}}

にこの

select samaccountname,@{ l = "Proxyaddresses"; e = {$_.Proxyaddresses } }

からSELECT文を変更します。 CSVにエクスポートしている場合は、CSVを台無しにするので、結合セパレータとしてカンマを使用したくありません。この例では*を使用しました。交換ではコロンとセミコロンが既に使用されています。

は、あなたがそれを再インポートするときに、単に文字列配列に戻す*区切り文字列を変換してください、と-add

Set-ADUser -replace @{$attribute = $proxyaddresses.Split("*")} -server $domain

+0

グレート説明するのではなく、-replace使用 - 私の問題を解決しました。注:-replaceの代わりに-addを続けて使用すると、-replaceはすべてのproxyaddresses属性エントリを新しいエントリに置き換えます – Itchydon

関連する問題