以下の関数は、実際のプロパティを設定するときに後で使用するために、渡されたパラメーターと値をハッシュテーブルに追加することになっています。. . 理解できない理由で、ハッシュテーブルは 1 つのプロパティ セットだけで 1 回だけ表示されます。
各ユーザーに渡されたすべての値を分割しようとしていますが、それは1つだけです。
Function Change-DRAUserProperty {
Param (
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[string[]]$UserName,
$Company,
$Department,
$DisplayName,
$Name,
$O,
$PhysicalDeliveryOfficeName,
$TelephoneNumber,
$Title
)
Begin
{
$OrgBoxOu = "*OU=XX, DC=XX"
$Parameters = $PSBoundParameters
$Properties = @{}
}
Process
{
foreach ($User in $UserName)
{
try {
$SelectedUser = $User
if ($SelectedUser) {
$Parameters.GetEnumerator() | Where-Object Key -ne 'UserName' |
ForEach-Object -Process `
{
if ($_.Key -eq 'DisplayName' -and $SelectedUser.DistinguishedName -notlike $OrgBoxOu) {
$Properties.Add('FirstNamePreferred', $_.Value)
}
$Properties.Add($_.Key, $_.Value)
}
$Properties
#Set-DRAUser -Identifier $SelectedUser.DistinguishedName -Properties $Properties @DRA_Server_Splat -ErrorAction Stop
}
else {
Write-Host -Object "No valid member selected!"
}
}
catch {
Write-Host -Object "$($_.Exception.Messge)" -ForegroundColor Red -BackgroundColor Black
continue
}
}
}
End { }
}
コマンド ライン引数の使用:Change-DRAUserProperty -UserName Abe, Abe2, Abe3 -Company SSC -Department USSF
. . .表示のみ:
Name Value
---- -----
Department USSF
Company SSC
渡されたユーザーごとに 1 つではなく (結果はどうあるべきか):
Name Value
---- -----
Department USSF
Company SSC
Name Value
---- -----
Department USSF
Company SSC
Name Value
---- -----
Department USSF
Company SSC
私が何を間違っているのかよくわかりません。他の誰かに見てもらい、私の間違いを指摘してもらえますか?
私は夢中になっていますか?