SOLVED

Migrating H drives to One Drive - Create csv

Copper Contributor

I am trying to create a CSV to migrate H drives to one drive. The CSV needs to have the path to the H drive and the SharePoint path to one drive. I am having trouble creating a script that can export the two strings. This is what I have.

 

 

 

 

$users = Get-ADUser -Searchbase "OU=test,DC=Whatever,DC=LOC" -filter * 

Foreach ($user in $users) {
	$homedirectory = (Get-Aduser -Identity $user -properties homedirectory | Select homeDirectory )
	$OneDrivePath = "\\test\test\" + (Get-ADUser -Identity $user -properties SAMAccountName | Select SAMAccountname)
	
	$output = New-Object -Typename psobject -Property @{
		HomeDirectory = $homedirectory
		OneDrivePath = $OneDrivePath
		}
	}

$output | Select HomeDirectory, OneDrivePath | Export-csv "C:\temp\test.csv"

 

 

 

 

 

6 Replies

@TJCooper440 

 

I Changed it a little bit for the $Homedirectory and $OneDrivePath but also for the Export-Csv.. Added a $totaloutput array to store the values in.

 

 

 

$users = Get-ADUser -Searchbase "OU=users,OU=Corp,DC=test,DC=local" -filter * 
$totaloutput = @()

Foreach ($user in $users) {
    $homedirectory = (Get-Aduser -Identity $user -properties homedirectory | Select-Object homeDirectory ).HomeDirectory
    $OneDrivePath = "\\test\test\" + (Get-ADUser -Identity $user -properties SAMAccountName | Select-Object SAMAccountname).SamAccountName

    $output = New-Object -Typename psobject	
    $output | Add-Member -MemberType NoteProperty -Name HomeDirectory -Value $homedirectory
    $output | Add-Member -MemberType NoteProperty -Name OneDrivePath -Value $OneDrivePath
    $totaloutput += $output
}

$totaloutput | Select-Object HomeDirectory, OneDrivePath | Export-csv "C:\temp\test.csv" -NoTypeInformation

 

 

 

This gives me the following csv

 

"HomeDirectory","OneDrivePath"
"\\w2k22dc\home$\test.user1","\\test\test\test.user1"
"\\w2k22dc\home$\test.user2","\\test\test\test.user2"
"\\w2k22dc\home$\test.user3","\\test\test\test.user3"

 

Hello @Harm_Veenstra and @TJCooper440,

In addition to Harm's reply I would like to add that instead of running Get-ADUser 3 times you can run it ones(on 1st line), and get all the needed properties(HomeDirectory, SAMAccountName etc.)  and then rotate them into PSObject as you needed.

Also I would add user's first and last name to output array just for future reference and convenience.

 

Hope that helps.

You're right, I only fixed the output thing but yes.. More efficient like that

@Harm_Veenstra 

 

Thank you. That worked. How would I add more to this string. I realized the doc needs _contoso_loc to the end. I tried + "_contoso_loc", but its not working

 

It needs to be \\test\test\(samaccountname)_constoso_loc.


Again, thank you. It helped out tremendously.

$OneDrivePath = "\\test\test\" + (Get-ADUser -Identity $user -properties SAMAccountName | Select-Object SAMAccountname).SamAccountName

 

best response confirmed by TJCooper440 (Copper Contributor)
Solution

@TJCooper440 Ah, no problem. Changed it again, a bit more compact and also using only one Get-Aduser like @AndySvints mentioned :) 

 

$Users = Get-ADUser -Searchbase "OU=users,OU=Corp,DC=test,DC=local" -Filter * -Properties HomeDirectory, SamAccountName
$TotalOutput = @()

Foreach ($User in $Users) {
    $OneDrivePath = "\\test\test\" + $user.SamAccountName + "_constoso_loc"
    $Output = New-Object -Typename psobject	
    $Output | Add-Member -MemberType NoteProperty -Name HomeDirectory -Value $User.HomeDirectory
    $Output | Add-Member -MemberType NoteProperty -Name OneDrivePath -Value $OneDrivePath
    $Totaloutput += $Output
}

$Totaloutput | Export-csv "C:\temp\test.csv" -NoTypeInformation

 


Output:

 

"HomeDirectory","OneDrivePath"
"\\w2k22dc\home$\test.user1","\\test\test\test.user1_constoso_loc"
"\\w2k22dc\home$\test.user2","\\test\test\test.user2_constoso_loc"
"\\w2k22dc\home$\test.user3","\\test\test\test.user3_constoso_loc"

 

 

 

Did the last adjustments got you the right output?
1 best response

Accepted Solutions
best response confirmed by TJCooper440 (Copper Contributor)
Solution

@TJCooper440 Ah, no problem. Changed it again, a bit more compact and also using only one Get-Aduser like @AndySvints mentioned :) 

 

$Users = Get-ADUser -Searchbase "OU=users,OU=Corp,DC=test,DC=local" -Filter * -Properties HomeDirectory, SamAccountName
$TotalOutput = @()

Foreach ($User in $Users) {
    $OneDrivePath = "\\test\test\" + $user.SamAccountName + "_constoso_loc"
    $Output = New-Object -Typename psobject	
    $Output | Add-Member -MemberType NoteProperty -Name HomeDirectory -Value $User.HomeDirectory
    $Output | Add-Member -MemberType NoteProperty -Name OneDrivePath -Value $OneDrivePath
    $Totaloutput += $Output
}

$Totaloutput | Export-csv "C:\temp\test.csv" -NoTypeInformation

 


Output:

 

"HomeDirectory","OneDrivePath"
"\\w2k22dc\home$\test.user1","\\test\test\test.user1_constoso_loc"
"\\w2k22dc\home$\test.user2","\\test\test\test.user2_constoso_loc"
"\\w2k22dc\home$\test.user3","\\test\test\test.user3_constoso_loc"

 

 

 

View solution in original post