私は、SBS 2003 Active Directory から 2008 R2 へのクラウドへの移行の最中です。
新しいユーザーを構成しましたが、そのユーザーがパスワードをリセットできないことに気付きました。
私のサーバー管理者は、ネットユーザーの使い方を教えてくれました。
情報を取得できるアカウントと取得できないアカウントがあることに気付きました。処理するアカウントが 100 を超えるので、PowerShell を試してみようと思いました。
この投稿 ( Use powershell to look up 'net user' on other domain? ) で、Lorenzo は Get-ADUser の使用を推奨しています (これは別のドメインからのポーリングにも当てはまります)。PowerShell プロンプトから Get-ADUser を実行すると、コマンドレットが認識されないというメッセージが表示されます。
テキスト ファイルからユーザー ID を読み取り、その出力をログ ファイルに送信して、さらに分析するためにサーバー管理者に送信できるようにしています。
これまでの私のコードは次のとおりです (私は PowerShell にまったく慣れていないことに注意してください)。
# Get our list of user names from the local staff.txt file
$users = get-content 'C:\Scripts\staff.txt'
# Create log file of output:
$LogTime = Get-Date -Format 'MM-dd-yyyy_hh-mm-ss'
$CompPath = "C:\Scripts\"
$CompLog = $CompPath + "NetUserInfo" + $LogTime + ".txt"
New-Item -path $CompLog -type File
foreach ($user in $users) {
#Testing user:
"Testing user: $user" | out-file $CompLog -Append
# Obtain user information using net user:
net user $user /domain >> $CompLog
# Pause to let system gather information:
Start-Sleep -Second 15
}
スクリプトが現在実行されているため、ログ ファイルには 2 つまたは 3 つのユーザー名があり、その後に「ドメイン (ドメイン) のドメイン コントローラーで要求が処理されます」という応答が続きます。
CMD からのネット ユーザーが「システム エラー 5 が発生しました。アクセスが拒否されました」を返す場合。これは出力ファイルに記録されません。CMD からの IF net user がユーザー情報を返す場合、これは出力ファイルに記録されます。現在、出力を受け取っているのは数人のユーザーのみですが、CMD からコマンドを実行すると、少なくとも 10 人の情報を取得できます。
私が最初に考えたのは、net user コマンドが完了するのを待つ必要がある (したがって Start-Sleep コマンド) ということでしたが、出力には何の影響もありませんでした。
どんな援助でも大歓迎です。