Using Powershell to update AD Users staring from a CSV

Hi!
i need to update a list of AD Users and change for all of them the same attribute with the same value.
i have a csv containing just the list of users cn, ho can i make the query on this attribute?
I start to build the command and i've something like that:
$USERS = Import-CSV C:\Users\Users2.csv
$USERS | Foreach{Get-ADUser
-filter {cn -eq $_.name} |
Set-ADUser -replace @{info=""}
but i got the following error for every entry in the csv:
Get-ADUser : Property: 'name' not found in object of type:
'System.Management.Automation.PSCustomObject'.
At line:1 char:18
+ $USERS | Foreach{Get-ADUser -filter {cn -eq $_.name}}
+                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentExcep
   tion
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,M
   icrosoft.ActiveDirectory.Management.Commands.GetADUser
something wrong for the filter in the command, someone can help?
Thanks!

Added Write-Verbose to help troubleshoot the data being sent to Get-ADUser to make sure that Name actually has data with it.
Also, the AD module sometimes behaves a little odd when using $_. with the Filter. I've found it better to declare a variable name prior to sending it to the filter like this:
$USERS = Import-CSV C:\Users\Users2.csv
$USERS | Foreach{
Write-Verbose "Name: $($_)" -Verbose
$Name = $_.Name
Get-ADUser -filter {cn -eq $Name} | Set-ADUser -replace @{info=""}
Boe Prox
Blog |
Twitter
PoshWSUS |
PoshPAIG | PoshChat |
PoshEventUI
PowerShell Deep Dives Book

Similar Messages

  • How to use Powershell to update user details in Active Directory?

    Hi,
    I received an updated contact list from HR of about 1500 names, and I want to update (make corrections and add missing data) ADUC quickly without having to do each user manually. How would I go about that using power-shell?
    The fields that need updating are:
    Under the General tab -> Description, Telephone number
    Everything under the Address tab
    Under the Telephone tab - > Mobile
    Under the Organization tab -> Job Title, Department, Company, Manager
    The server we're using is Windows Server 2008 R2.
    Many thanks,
    Nick

    There are 100 of such scripts are there online.
    here are few tips and codes. you will get more.  
    https://gallery.technet.microsoft.com/scriptcenter/Feeding-data-to-Active-0227d15c
    http://blogs.technet.com/b/heyscriptingguy/archive/2012/10/31/use-powershell-to-modify-existing-user-accounts-in-active-directory.aspx
    http://powershell.org/wp/forums/topic/ad-import-csv-update-attributes-script/
    Please mark this as answer if it helps

  • Using Powershell to delete all users from the Portal

    Summary
    This script will delete all users from the Portal except for Administrator and the Built-In Sync account.
    Based on Markus's "Delete a User" script.
    Useful when developing your system if you want to quickly clear out the data and start again.
    set-variable -name URI -value "http://localhost:5725/resourcemanagementservice' " -option constant
    function DeleteObject
    PARAM($objectType, $objectId)
    END
    $importObject = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportObject
    $importObject.ObjectType = $objectType
    $importObject.TargetObjectIdentifier = $objectId
    $importObject.SourceObjectIdentifier = $objectId
    $importObject.State = 2
    $importObject | Import-FIMConfig -uri $URI
    if(@(get-pssnapin | where-object {$_.Name -eq "FIMAutomation"} ).count -eq 0) {add-pssnapin FIMAutomation}
    $allobjects = export-fimconfig -uri $URI `
    –onlyBaseResources `
    -customconfig "/Person"
    $allobjects | Foreach-Object {
    $displayName = $_.ResourceManagementObject.ResourceManagementAttributes | `
    Where-Object {$_.AttributeName -eq "DisplayName"}
    if([string]::Compare($displayName.Value, "Administrator", $True) -eq 0)
    {write-host "Administrator NOT deleted"}
    elseif([string]::Compare($displayName.Value, "Built-in Synchronization Account", $True) -eq 0)
    {write-host "Built-in Synchronization Account NOT deleted"}
    else {
    $objectId = (($_.ResourceManagementObject.ObjectIdentifier).split(":"))[2]
    DeleteObject -objectType "Person" `
    -objectId $objectId
    write-host "`nObject deleted`n" $displayName.Value }
    Go to the FIM ScriptBox
    http://www.wapshere.com/missmiis

    The DeleteObject function opens and closes a connection for each object.  This approach is faster:
    http://social.technet.microsoft.com/wiki/contents/articles/23570.how-to-use-powershell-to-delete-fim-users-that-have-a-null-attribute-name.aspx
    Mike Crowley | MVP
    My Blog --
    Planet Technologies

  • How to Use PowerShell to Delete FIM Users That Have a Null attribute name

    FIM Community Information Center Article
    Wiki Page:
    How to Use PowerShell to Delete FIM Users That Have a Null <attribute name>
    Go to the FIM Community Information Center
    Mike Crowley | MVP
    My Blog --
    Planet Technologies

    Have you run side-by-side metrics on this?
    I've run the Delete Object method and your script against similar data sets and yours appears to take a fair bit longer. I'd have to re-run in identical circumstances, a few times, to really say for sure, but my initial impression is that it will take hours
    longer.
    I guess the point is somewhat moot anyway, as for me the bit that generally takes longest is the actual query, rather than the deletions.
    Boy how I wish I could just enter something into the FIM Portal directly that would blast out a bunch of users matching a query. One day...
    FIMSpecialist.com | MCTS: FIM 2010 | Now Offering
    ECMA1->ECMA2 Upgrade Services

  • Use powershell to read Environment tab checkbox from ADUC

    Hello all,
    In ADUC, when you pull up a user, you can see an "Environment" tab, which contains a checkbox for "Start the following program at logon:". Here's a picture:
    What I would like to do is use PowerShell to see if this checkbox is checked for a user. In my Google searches however, I have found that this checkbox is contained in the infamous "UserParameters" attribute.
    My question is, what is the best way to see if this checkbox is checked for a user using PowerShell? Is this checkbox contained in any other attribute that PowerShell can read, or will I need to parse the UserParameters attribute to see if it's checked?

    Hi Kent,
    As a workaround, the script below can help you to get the option "Program file name" and "Start in", if the option "Start the following program at logon" hasn't been checked, the script below will occur error "the property
    can't be found":
    $user = [adsi]"LDAP://CN=username,CN=Users,DC=domain,DC=domain,DC=com"
    $user.PSBase.Invokeget("TerminalServicesInitialProgram")
    $user.PSBase.Invokeget("TerminalServicesWorkDirectory")
    If there is anything else regarding this script, please feel free to post back.
    Best Regards,
    Anna Wang

  • User upload from a csv file via users_gen

    Hello SRM Guru,
    I am uploading users via transaction users_gen from a csv file, all the users are uploaded correctly but I see that there are some special charater (which we have in german language) are not cpoied correctly for example the last name is copied as
    B#hm instead of Böhm. Although my logon language was German only.  
    Any help is appreciated !!!
    Thanks,
    Jack

    Hello,
    Right click on your file, choose "open with", choose notepad. Then in notepad, "save as" and in encoding choose unicode.
    But it's just a quick trick to convert your file in an unicode one. There should be an option in the editor you use to directly save csv in unicode encoding.
    P.

  • OIM 10g: Best practice for updating OIM user status from target recon?

    We have a requirement, where we need to trigger one or more updates to the OIM user record (including status) based on values pulled in from a target resource recon from an LDAP. For example, if an LDAP attribute "disable-flag=123456" then we want to disable the OIM user. Other LDAP attributes may trigger other OIM user attribute changes.
    I think I need to write a custom adapter to handle "recon insert received" and "recon update received" events from the target recon, but wanted to check with the community to see if this was the right approach. Would post-insert/post-update event handlers be a better choice?

    Thanks Nishith. That's along the lines of what I was thinking. The only issue in my case is that I might need to update additional custom attributes on the OIM User in addition to enable/disable. Because of that requirement, my thought was to call the API directly from my task adapter to do the attribute updates in addition to the enable/disable. Does this seem like a sound approach?

  • Using Sockets to Update Active Users in a Chat

    Hello. I am developing a multi-player game for a class using sockets. When a player loads the game, it first opens a GUI that allows the user to enter the hostname, port number of the server and their username. Upon connecting, the user can type into a chat area with other users. Now, i am trying to get the program to keep track of current users connected in a TextArea, but am having problems. Here is my relevent code for the chat.
    * Recieves messages from the server
    public void run() {
    try {
    while (true) {
         String line = (i.readUTF ());
    outputText.appendText (line + "\n");
    } catch (IOException ex) {
    ex.printStackTrace ();
    } finally {
    listener = null;
    inputText.hide ();
    validate ();
    try {
    o.close ();
    } catch (IOException ex) {
    ex.printStackTrace ();
    * Handles user interation
    public boolean handleEvent (Event e) {
    if ((e.target == inputText) && (e.id == Event.ACTION_EVENT)) {
    System.out.println(e.target + " " + e.id);
    try {
         o.writeUTF (user + ": " + (String) e.arg);
    o.flush ();
    } catch (IOException ex) {
    ex.printStackTrace();
    listener.stop ();
    inputText.setText ("");
    return true;
    } else if ((e.target == this) && (e.id == Event.WINDOW_DESTROY)) {
    if (listener != null)
    listener.stop ();
    hide ();
    return true;
    return super.handleEvent (e);
    So what would i do to keep track of the users currently connected in a TextArea. Thanks.

    Sorry, I did not see the code format.
         * Recieves messages from the server
        public void run() {
            try {
          while (true) {
           String line = (i.readUTF ());
            outputText.appendText (line + "\n");
        } catch (IOException ex) {
          ex.printStackTrace ();
        } finally {
          listener = null;
          inputText.hide ();
          validate ();
          try {
            o.close ();
          } catch (IOException ex) {
            ex.printStackTrace ();
         * Handles user interation
        public boolean handleEvent (Event e) {
        if ((e.target == inputText) && (e.id == Event.ACTION_EVENT)) {
            System.out.println(e.target + " " + e.id);
          try {
           o.writeUTF (user + ": " + (String) e.arg);
            o.flush ();
          } catch (IOException ex) {
            ex.printStackTrace();
            listener.stop ();
          inputText.setText ("");
          return true;
        } else if ((e.target == this) && (e.id == Event.WINDOW_DESTROY)) {
          if (listener != null)
            listener.stop ();
          hide ();
          return true;
        return super.handleEvent (e);
      }

  • HT4798 I have a used mac book with the user id from the old user still on the system, how do I reset it to a new one?

    I have obtained a used MacBook that still has the previous owners User ID associated with it, how do I go about changing it to me so that all the necessary accounts to reflect my user rights?

    If you have a Used Mac that has the old user's account, then you also could have the old user's malware installed, which is collecting all your financial account information. Likely? Probably not. you want to take the chance?
    You should erase the drive completely and re-install the OS.
    If you don't want to do that, create a new user account, give it admin privileges, log into that account, and delete the old user's account.

  • Creating multiple mailboxes using Powershell for users who already exist in AD

    Hi there,
    Wondering if anyone can help, I am wanting to use Powershell to run a command which references a CSV file to create a mailbox for a user who already exists in AD.
    It needs to reference the username, to ensure the correct user has a mailbox created (as mentioned they exist already in the domain), place them on a specific database (e.g DB1) and assign them an email address as well as possibly an alias email address
    too.
    Can anyone provide me the headings of the CSV file which would be needed as well as the powershell command to run. It would be great too if I could also set the quota sizes for the user at the same time of creating the mailbox, but if not possible or complicated
    I can run a script afterwards to do this. I would only want to warn them when their mailbox is 1.5GB in size and stop them sending when it reaches 2GB. 
    Thanks

    So create a csv file with the following headers and data
    UserID, Alias
    UserID should be the user SamAccountName, and the Alias is the Mailbox Alias that you want to set. Supposing that the csv file is named users.csv and located under C:\ , open the Exchange Management Console and run:
    $users = Import-Csv c:\users.csv
    Foreach ($user in $users) {
    Enable-Mailbox -Identity $user.UserID -alias $user.alias -database 'DB1'
    Set-Mailbox -Identity $user.UserID -IssueWarningQuota 1.5gb -ProhibitSendQuota 2gb 
    Please Mark As Answer if this helps
    ammarhasayen

  • Home directory creation for local user accounts using powershell

    Through Computer Management when I create a user, a home directory is created for the same user in the folder C:\Users.I am creating a user through powershell in a remote machine.I am using the following script to create user 
    $comp = [ADSI]'WinNT://localhost,computer';
    $user = $comp.Create('User', 'account7');
    $user.SetPassword('Welcome1');
    $user.SetInfo();
    The account is getting created. But no home directory is created for this user. How to create a home directory for a user using powershell? Also the user created through GUI is a member of the group 'Users' by default. How to add the user created to the
    'Users'  Group.

    Hi Cmm user,
    Thanks for your posting.
    To set the attribute of homedirectory for a user in powershell, please also try the cmdlet set-aduser:
    import-module activedirectory
    $HomeDrive=’Z:’
    $UserRoot=’\\CONTOSO-FPS\Users$\’
    $HomeDirectory=$UserRoot+$AccountName
    SET-ADUSER $AccountName –HomeDrive $HomeDrive –HomeDirectory $HomeDirectory
    I hope this helps.
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • How can i deploy sandboxed solution .wsp file to sharepoint 2013 online using powershell script?

    Is there any way to deploy the Sandbox solution .wsp file to sharepoint 2013 online publishing site using powershell or CSOM or any other way?

    Hi,
    According to your post, my understanding is that you wanted to deploy sandboxed solution .wsp file to sharepoint 2013 online.
    "Add-SPSolution" command is not available in SharePoint Online management shell. So, we cannot use PowerShell to update and deploy a solution in SharePoint Online environment. Meanwhile, here is index of Windows PowerShell for SharePoint Online
    cmdlets for your reference:
    http://technet.microsoft.com/en-us/library/fp161364.aspx
    You can CSOM to deploy solution using helper class from CodePlex. The activation code is as follows: SandboxSolutions.ActivateSolution(siteCollectionURl, cookies, "solution_name.wsp");
    About the Client Side Object Model (CSOM), it is a development related issue, we have a specific support channel for the SharePoint developers, so I recommend you go to our MSDN forum for further assistance.
    Here is a similar thread for you to take a look at:
    http://community.office365.com/en-us/forums/156/t/197404.aspx
    In addition, if you would like to upload and activate sandbox solution manually, you can refer to:
    http://community.office365.com/en-us/forums/154/p/64010/244496.aspx#244496
    Best Regards,
    Linda Li
    Linda Li
    TechNet Community Support

  • Set storage quota on multiple mailboxes using PowerShell?

    I need to set storage quota limits on multiple mailboxes using PowerShell. I understand I can create a .csv file with aliases and pipe that into a cmdlet, eg.,
    Import-CSV "C:\temp\alias.csv" | % {Set-Mailbox -identity $_.alias -IssueWarningQuota 900mb -ProhibitSendQuota 950mb -ProhibitSendReceiveQuota 1gb -UseDatabaseQuotaDefaults $false
    Is there any other way of doing this with a much more robust script?
    Any help would be much appreciated.

A: Set storage quota on multiple mailboxes using PowerShell?

Hi,
Is there any special attribute for these multiple mailboxes? such as they are from a specific OU or a distribution group etc.
If there is, we can direct use the filter to pick out these mailboxes instead of create .csv file for them. The following example can set storage quota for mailboxes in a distrobution group Group1:
Get-DistributionGroupMember -Identity Group1 | ForEach{ Set-Mailbox -identity $_.Name -IssueWarningQuota 900mb -ProhibitSendQuota 950mb -ProhibitSendReceiveQuota 1gb -UseDatabaseQuotaDefaults $false}
The following example is used to set storage quota for mailboxes from Exchange Department:
Get-Recipient | Where-Object {$_.Department -eq 'Exchange'} | ForEach{ Set-Mailbox -identity $_.Name -IssueWarningQuota 900mb -ProhibitSendQuota 950mb -ProhibitSendReceiveQuota 1gb -UseDatabaseQuotaDefaults $false}
Regards,
Winnie Liang
TechNet Community Support

Hi,
Is there any special attribute for these multiple mailboxes? such as they are from a specific OU or a distribution group etc.
If there is, we can direct use the filter to pick out these mailboxes instead of create .csv file for them. The following example can set storage quota for mailboxes in a distrobution group Group1:
Get-DistributionGroupMember -Identity Group1 | ForEach{ Set-Mailbox -identity $_.Name -IssueWarningQuota 900mb -ProhibitSendQuota 950mb -ProhibitSendReceiveQuota 1gb -UseDatabaseQuotaDefaults $false}
The following example is used to set storage quota for mailboxes from Exchange Department:
Get-Recipient | Where-Object {$_.Department -eq 'Exchange'} | ForEach{ Set-Mailbox -identity $_.Name -IssueWarningQuota 900mb -ProhibitSendQuota 950mb -ProhibitSendReceiveQuota 1gb -UseDatabaseQuotaDefaults $false}
Regards,
Winnie Liang
TechNet Community Support

  • Get the daily incremental search crawl information using PowerShell script

    Dear Friends ,
        I want to get the daily incremental search crawl information using PowerShell script . I need this information into CSV or txt format . Can you please help me with this.
    valmiki

    Hi
    I  have got the below script which worked .
    ## SharePoint Reference
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.Search.Administration")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.Search")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
    function global:Get-CrawlHistory($url)
    trap [Exception] {
    write-error $("ERROR: " + $_.Exception.GetType().FullName);
      write-error $("ERROR: " + $_.Exception.Message);
      continue;  
    $s =
    new-Object Microsoft.SharePoint.SPSite($url);
    $c = [Microsoft.Office.Server.Search.Administration.SearchContext]::GetContext($s);
    $h =
    new-Object Microsoft.Office.Server.Search.Administration.CrawlHistory($c);
    Write-OutPut $h.GetCrawlHistory();
    $s.Dispose();
    Get-CrawlHistory
    -url  http://your_site_url/
      |
    Export-CsvF:\temp\search.csv
    valmiki

  • Unable to remove user from SharePoint Group using PowerShell

    I am trying to remove a user from a SharePoint Group using PowerShell.
    I can see the user in the Site Collection as part of the SharePoint Group, however, when I attempt to run the script, I get an error message stating "Can not find the user with ID: 10"
    Below is the PowerShell script that I am using:
    $url = "https://sharepointdev.spfarm.spcorp.com/sites/desitecoll"
    $userName = "spfarm\sp2013_svc"
    #$userName = "spfarm\spprofileimport";
    $site = New-Object Microsoft.SharePoint.SPSite($url)
    $web = $site.OpenWeb()
    $siteGroups = $web.SiteGroups;
    Clear-Host
    $mySiteGroups = @();
    foreach($group in $siteGroups)
    Write-Host $group
    $mySiteGroups += $group;
    }#foreach
    $members = $web.SiteGroups[$mySiteGroups[0]];
    $owners = $web.SiteGroups[$mySiteGroups[1]];
    $visitors = $web.SiteGroups[$mySiteGroups[2]];
    #Remove the user from the specified SharePoint Group
    $spUser = Get-SPUser -Identity $userName -Web $url
    Write-Host $spUser.ID
    Remove-SPUser -Identity $spUser -Web $url -Group $owners
    $web.Update();
    $web.Dispose();
    Write-Host "User " $userName "removed from " $owners
    Please advise.

    I had to update the code to the following because Get-SPUser was not working properly:
    $url = "https://sharepointdev.spfarm.spcorp.com/sites/desitecoll"
    $userName = "spfarm\spprofileimport";
    $site = New-Object Microsoft.SharePoint.SPSite($url)
    $web = $site.OpenWeb()
    $siteGroups = $web.Groups;
    Clear-Host
    $mySiteGroups = @();
    foreach($group in $siteGroups)
    Write-Host $group
    $mySiteGroups += $group;
    }#foreach
    $members = $web.Groups[$mySiteGroups[0]];
    $owners = $web.Groups[$mySiteGroups[1]];
    $visitors = $web.Groups[$mySiteGroups[2]];
    #Convert the user name to an SPUser account
    $spUser = $web.Site.RootWeb.EnsureUser($userName);
    Write-Host $spUser.ID
    Remove-SPUser -Identity $spUser -Web $url -Group $owners
    $web.Update();
    $web.Dispose();
    Write-Host "User " $userName "removed from " $owners
    Was I not using Get-SPUser correctly?

  • Maybe you are looking for

    • Help - flash player v6 standalone for mac OS 8.6?

      desperately looking for flash standalone player v6 for mac OS 8.6. tried the adobe downloads archived flash player section: http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14266&sliceId=2 theres an extensive version 6, but the install on

    • Trying to configure Portal to run off the network

      Hi all, I am trying to configure Oracle Portal 3.0.9.8.2 to run off the network. I have taken all of the recommended steps in terms of configuring hostname, using a static IP, running and checking the ssoodatan script, updating the hosts file, and co

    • What is the proper display default setting for a MacBook 13''?

      Hi, I clicked on system preferences from the little blue apple and then clicked on Display because I was wanted to increase my screens brightness. Before I clicked anything else however, the screen blinked and blacked out and then came back up with l

    • "Finding occurrences" error when editing .mxml file in Flash Builder 4.6 Premium (Trial)

      I am evaluating Flash Builder 4.6.  Windows 7 Ultimate x64 I am trying to go through the Flex in a week training series but I am getting a lot of the "Finding occurrences" errors when editing the mxml files. The error: An internal error occurred duri

    • Problem activating FaceTime on unlocked iPhone 4

      When I try to turn FaceTime on in Settings it keeps saying "username or password was incorrect. try again." even though I haven't entered either, I'm trying to turn it on to set it up. Does anyone know how to fix this?