@nekoru

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PowerShellを使用してADの登録情報を変更したい

解決したいこと

PowerShellを使用して、ADの登録情報をテキストファイルを読み込んでアカウント情報を取得して変更したいです。

発生している問題・エラー

Get-ADUser : 無効な型 'System.Management.Automation.PSCustomObject' です。

該当するソースコード

テキストファイルのパス
$filePath = "C:\202404.txt"

ユーザーアカウント情報をテキストファイルから読み込む
filePath | ConvertFrom-StringData

ユーザーアカウント名の取得
userInfo.GetEnumerator() | Where-Object { $.Key -eq 'Username' } | ForEach-Object { $.Value }

ユーザーアカウントを取得
$user = Get-ADUser -Filter { SamAccountName -eq $username }

取得したユーザーアカウントの属性を書き換える
userInfo['Company']
userInfo['Department']
userInfo['Description']

書き換えた属性を保存
Set-ADUser -Instance $user

自分で試したこと

ChatGPTの力を借りて初めてコードを書いており、延々うまくいかない状態が続いております。
どなたかお力をお貸しいただけませんでしょうか?

0 likes

1Answer

AD情報の変更の前に、取得はできているのでしょうか?

$Users = Get-Content "C:\202404.txt"
$UserInfo = $Users | foreach-object {Get-ADUser $_ -properties Company,Department,Description} | Select Company, Department, Description
$UserInfo
0Like

Comments

  1. @nekoru

    Questioner

    すみません、少し違う内容を実行したのですが、同じ結果でした。

    テキストファイルのパス

    $filePath = "C:\202404.txt"

    ユーザーアカウント情報をテキストファイルから読み込む

    $userInfo = Get-Content $filePath | ConvertFrom-StringData

    ユーザーアカウント名の取得

    $username = $userInfo.GetEnumerator() | Where-Object { $.Key -eq 'Username' } | ForEach-Object { $.Value }

    ユーザーアカウントを取得

    $user = Get-ADUser -Filter { SamAccountName -eq $username }

    取得したユーザーアカウントの属性を書き換える

    $user.Company = $userInfo['Company']
    $user.Department = $userInfo['Department']
    $user.Description = $userInfo['Description']

    書き換えた属性を保存

    Set-ADUser -Instance $user

    $userinfoにDNがセットされていました。
    ですが、$usernameがブランクでしたので、取得できていないと思います。
    何が悪いのかが全く分からず困っております。
    お力添えいただけますと大変助かります。

    よろしくお願いいたします。

  2. すみません、少し違う内容を実行したのですが、同じ結果でした。

    何が同じなのか、意味が分かりません。

    もう一度、バッチファイルの中身を、以下を参照してコードブロックに正しくコピペしてください。

  3. @nekoru

    Questioner

    結果が同じ=同じエラーが出ました、という意味でした。
    分かりづらく申し訳ありませんでした。

    リンクを貼っていただきましてありがとうございます。
    初心者のため、書かれている内容が全く分かりませんでした。
    コードを書くことで、テキストファイルを読み込んで自動で変更を反映させるようにする、は諦めて、手動もしくはPowerShellをべた書きして変更を反映させていこうと思います。

    お忙しい中お時間をいただきましてありがとうございました。

  4. お役に立てずすみませんでした。
    よろしければ、当Q&Aをクローズしていただいて結構です。

Your answer might help someone💌