How to handle Null messages in Foreach loops

This topic contains 0 replies, has 1 voice, and was last updated by  Forums Archives 6 years, 2 months ago.

  • Author
  • #5220

    by johnkeng at 2012-10-22 10:58:27

    This is a noob question I hope someone can shed some knowledge on.

    I'm working on a script that will compare the home directory of each user and move it to a new file share server.

    $users=import-csv c:\homedir_cleanup.csv

    foreach ($name in $Users) {
    get-aduser $name -properties homedirectory | %{copy-item -recurse $_.homedirectory -destination \\\homedir}
    get-aduser $name -properties homedirectory | %{remove-item -recurse $_.homedirectory -force}

    However there are numerous accounts that don't have home directories which leads to null path errors. Is there a way to suppress these messages or write them to a log.txt file for troubleshooting? I understand powershell isn't a "true" programming language, but I'd like to know how others handle these scenarios.


    by DonJ at 2012-10-22 11:05:22

    Sure – just use an If() construct to compare it to $null. If in fact it's NULL (as opposed to an empty string, or "), then you'll get a true comparison.

    $user = Get-ADUser $name -properties homedirectory
    if ($user.homedirectory -ne $null) {
    # do other stuff here - you've got a home dir
    } else {
    # it's null - log it or whatever

    by Lembasts at 2012-10-22 14:05:56

    [quote="johnkeng"] I understand powershell isn't a "true" programming language,
    Just a correction here – it IS a "true" programming language by any definition 🙂

    by DonJ at 2012-10-22 14:15:21

    Well, probably depends on how you define "programming language," I suppose. A lot of C++ guys wouldn't agree ;). But it suffices for its task.

You must be logged in to reply to this topic.