1

私は、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 コマンド) ということでしたが、出力には何の影響もありませんでした。

どんな援助でも大歓迎です。

4

2 に答える 2

1

申し訳ありませんが、コメントを追加するのに十分な評判がありません。

Powershell でプログラムを実行すると (net user...または などping)、通常のコマンド プロンプト (cmd) とまったく同じように実行されます。

私が正しく理解している場合、Powershellまたはコマンドプロンプトで同じことを(効果的に)実行すると、異なる結果が得られます。そうですか?

ISE を使用してスクリプトを作成していますか? その場合は、スクリプトを一時停止して変数を確認できるブレークポイントを設定できます。変数が$user想定どおりに保持されていないか、値がドメイン ユーザー アカウントの名前と一致していない可能性があります。

編集:

net user ...Powershell でコマンドを対話的に (たとえば、スクリプトとしてではなく手動で)実行するとどうなりますか? エラーが出ますか?もしそうなら、エラーは何と言っていますか?

追加の関連事項:

コマンドは順番に実行されるため、Start-Sleep は必要ありません。次の行は、前の on が完了するまで実行されません。

また、Powershell のどのバージョンを使用していますか?

(実行すると確認できます$host.version.Major)

Get-ADUser コマンドレットにはバージョン 3 が必要であり (私は信じています)、Active Directory モジュールもインポートする必要があります。

于 2013-08-19T11:46:34.543 に答える