Solved

POWERSHELL COMMAND FOR COPY-ITEM

Posted on 2010-09-10
8
1,263 Views
Last Modified: 2012-05-10
Hi there

I'm looking for a powershell command that is equivalent to the following dos command:

 for /f %%N in (test.txt) DO CALL robocopy "D:\User Areas\Reenrolled\%%N\My Documents" "\\SERVER\E$\Area\%%N\My Documents\sub folder" /E /R:0 > C:\diditwork.txt

I'm sure its something to do wiht assigning a variable somewhere  but my mind has gone blank

Many thanks
0
Comment
Question by:Colchester_Institute
  • 4
  • 2
  • 2
8 Comments
 
LVL 31

Expert Comment

by:Justin Owens
ID: 33646250
Are you wanting PowerShell to do the copying, or are you wanting PowerShell to call Robocopy?
0
 
LVL 1

Author Comment

by:Colchester_Institute
ID: 33646342
Powershell to do the copying...Have a list of names in the text file that need to be used so for example the Text file might contain:
DrUltima
Joeblogs
MickyMouse

and i need those names to be used as the areas that are being copied is:

Server1\E:\Users\<Txt file name here eg Joeblogs>\My Docs

and its being copied to

Server2\E:\Users\<Txt file name here eg Joeblogs>\My Docs\Subfolder

Like i said i know i can do this using robocopy i'd just rather start using Powershell to do such things and am sure i'm just being dense...Its Friday arvo! LOL
0
 
LVL 13

Assisted Solution

by:soostibi
soostibi earned 250 total points
ID: 33647840
Update the variables in lines 3-5 and the path to the text file in line 8 and the last, and try this:
Import-Module bitstransfer

$sourcedir = "D:\User Areas\Reenrolled"
$upload = "\\SERVER\E$\Area"
$MyDocuments = "My Documents"
$subfolder = "sub folder"

$ProgressPreference = 'SilentlyContinue'
Get-Content c:\test.txt | ForEach-Object {
	$currfolder = $_
	if(!(Test-Path "$upload\$currfolder\$Mydocuments\$subfolder")){
		New-Item -Path "$upload\$currfolder\$Mydocuments" -Name $subfolder -ItemType directory  > $null
	}
	if(Test-Path "$sourcedir\$currfolder\$mydocuments"){
		Get-ChildItem "$sourcedir\$currfolder\$mydocuments" -Recurse | ForEach-Object {
			Start-BitsTransfer -Source $_.fullname -Destination "$upload\$currfolder\$MyDocuments\$subfolder\" -TransferType upload
			if($?){"successfully copied: $($_.fullname)"}else{"error during copy: $($_.fullname)"}
		}
	}
} > C:\diditwork.txt

Open in new window

0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 31

Expert Comment

by:Justin Owens
ID: 33647879
That is cleaner than what I was doing... Well done, soostibi.
0
 
LVL 1

Author Comment

by:Colchester_Institute
ID: 33660530
Hi soostibi

That works perfect. ty..Just one more question incase i decide to add it or change it later.....How do i either make it move the original files or once its copied them delete the original files?

Many thanks
0
 
LVL 1

Author Comment

by:Colchester_Institute
ID: 33660861
Also one thing i did notice.....Any subfolders weren't copied over...The files were but not the folders so the Files just ended up in one big folder for each user
0
 
LVL 13

Accepted Solution

by:
soostibi earned 250 total points
ID: 33666733
This is an updated version (I do not exactly understand the role of your "subfolder").
Import-Module bitstransfer  
  
$sourcedir = "D:\User Areas\Reenrolled"  
$upload = "\\SERVER\E$\Area"  
$MyDocuments = "My Documents"  
$subfolder = "sub folder" 

$ProgressPreference = 'SilentlyContinue'
Get-Content c:\ee\test.txt | ForEach-Object {
	$currfolder = $_
	if(Test-Path "$sourcedir\$currfolder\$mydocuments"){
		Get-ChildItem "$sourcedir\$currfolder\$mydocuments" -Recurse | ?{!$_.psiscontainer} | ForEach-Object {
			$newfullpath = ($_.directoryname -replace ([regex]::Escape("$sourcedir\$currfolder\$mydocuments")), 
				"$upload\$currfolder\$MyDocuments\$subfolder")
			if(!(Test-Path $newfullpath)){
				New-Item -Path (split-path $newfullpath -parent) -Name (split-path $newfullpath -leaf) -ItemType directory  > $null
			}
			Start-BitsTransfer -Source $_.fullname -Destination $newfullpath -TransferType upload
			if($?){"successfully copied: $($_.fullname)"}else{"error during copy: $($_.fullname)"}
		}
	}
} > C:\diditwork.txt

Open in new window

0
 
LVL 1

Author Comment

by:Colchester_Institute
ID: 33670588
The role of the sub folder is basically that i'm moving data from what was an old domain and placing it into the users area on the new domain.  But what them to easily be albe to find the data from the old one :-) Many thanks
0

Featured Post

Are your AD admin tools letting you down?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Remote Powershell Issue 3 32
Office 365 Resource Calendars aka "Rooms" 4 41
Ruby or Python 7 61
Fastest way to get file count in MS Server 2012 3 11
ADCs have gained traction within the last decade, largely due to increased demand for legacy load balancing appliances to handle more advanced application delivery requirements and improve application performance.
Previously, on our Nano Server Deployment series, we've created a new nano server image and deployed it on a physical server in part 2. Now we will go through configuration.
The viewer will learn how to count occurrences of each item in an array.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question