0

こんにちは、次のコードがあり、3 つの関数があります。

function Search_User_File { foreach  ($User in $FILE) { Search_User_AD} }

function Search_User_AD {
    $Ad = Get-ADUser -filter * -Properties sAMAccountName,sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber  -SearchBase "OU=COMPANY,DC=COMPANYcolo,DC=pvt" | Select-Object  sAMAccountName,sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber
    $Search = $Ad | ? {$_.sn -eq $User.sn}
    If ($Search) {
        Foreach ($AD_User in $Search)  {
              Write-Host "=============CSV User==============="
              Write-Host ""
              Write-Host "=============AD User==============="
              Write-Host ""
              $RightWrong = Read-Host 'Is this the RIGHT EMPLOYEE we are working (Y/N)'
              If ($RightWrong -eq "Y") {
        write-host ""
        $Correct = Read-Host 'NOTE: Is the EMPLOYEE Information FOUND In AD CORRECT AGAINST The EMPLOYEE Information FOUND In the FILE File? (Y/N)'
        If (($RightWrong -eq "Y") -and ($Correct -eq "N")){
            Edit_AD_User
        }
        Elseif (($RightWrong -eq "Y") -and ($Correct -eq "Y"))  {
                            clear-host

ここで、SEARCH_USER_FILE で MOVE.NEXT を実行するにはどうすればよいですか? そうしないと、Search_User_File が最初からやり直されます。

                            Search_User_File
        }
   }
}

function Edit_User_AD {

}

$File = Import-Csv "c:\scripts\ad\temp\file.csv" -header sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber
Search_User_File

ご協力いただきありがとうございます、

4

1 に答える 1

0

毎回 AD の全員を取得してから姓で検索するため、これはかなり非効率的です。可能であれば、その CSV ファイル内の各ユーザーを一意に識別するものを取得してGet-ADUser、事後ではなくコマンドレット内でフィルター処理できるようにします。

同じ姓 ( ) のユーザーが 2 人いる場合はどうなりますsnか?

通常、ユーザーの AD を検索して見つけ、そのオブジェクトを変数に割り当て、編集を実行して変更を保存します。あなたはここで少し跳ね回っています。

$File = Import-Csv "c:\scripts\ad\temp\file.csv" -header sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber

foreach ($user in $file) {
  Search_User_AD $user.sn
}

function Search_User_AD {
param(
 [string]$sn
)
    $Ad = Get-ADUser -filter * -Properties sAMAccountName,sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber  -SearchBase "OU=COMPANY,DC=COMPANYcolo,DC=pvt" | Select-Object  sAMAccountName,sn,givenName,department,title,telephoneNumber,employeeID,employeeNumber
    $Search = $Ad | ? {$sn -eq $User.sn}
    If ($Search) {
        Foreach ($AD_User in $Search)  {
              Write-Host "=============CSV User==============="
              Write-Host ""
              Write-Host "=============AD User==============="
              Write-Host ""
              $RightWrong = Read-Host 'Is this the RIGHT EMPLOYEE we are working (Y/N)'
              If ($RightWrong -eq "Y") {
        write-host ""
        $Correct = Read-Host 'NOTE: Is the EMPLOYEE Information FOUND In AD CORRECT AGAINST The EMPLOYEE Information FOUND In the FILE File? (Y/N)'
        If (($RightWrong -eq "Y") -and ($Correct -eq "N")){
            Edit_AD_User
        }
        Elseif (($RightWrong -eq "Y") -and ($Correct -eq "Y"))  {
                            clear-host
        }
     }
   }
于 2013-01-11T21:09:47.230 に答える