Showing posts with label powershell. Show all posts
Showing posts with label powershell. Show all posts

Friday, July 8, 2011

PowerShell to Migrate Files from the File System to a SharePoint Document Library

I had the requirement to copy all files and folders from a fileshare directly into SharePoint. Normally i would have just used explorer view however the terminal server that was being used didn't have the web client installed. I used the following poweshell to get the documents migrated
NOTE: this does not migrate security
NOTE: does not check for invalid charcters
NOTE: must be run on a sharepoint server joined to the farm


function ProcessDirectory($directory, $spfolder){
$directory.GetDirectories() foreach{
#create direcotry
write-host "creating directory" $_.Name
$newfolder = $spfolder.SubFolders.Add($_.Name)
#recurse directory
ProcessDirectory $_ $newfolder
}
$directory.GetFiles() foreach{
#uploadfile
write-host "uploading file" $_.Name
$newfile = $spfolder.Files.Add($_.Name,$_.OpenRead(),$true)
}
}
#you could use a local drive. If migrating from a remote server mount the share
#net use X: \\fileshare\sharename
#change current directory
x:
#get web
$web = get-spweb "http://companyweb"
#get the document library
$list = $web.Lists["TestMigration"]
$rootfolder = $list.RootFolder
#get DirectoryInfo object
$currentfolder = get-item .
#start process
ProcessDirectory $currentfolder $rootfolder

Monday, November 1, 2010

Word Automation Services Job History

I recently had to make use of the Word Automation Service application to convert word documents to pdf within sharepoint. If you have used the service application before you will be aware that once you queue a document you have to wait for the timer job to run before the document can be converted. There are some solutions which poll the service to see if the conversion process has completed successfully, but what if you what to view the status of previous and failed conversions? I couldn't find anywhere within Central Administration to view the history (let me know if I'm missing something!).

I knocked together the following powershell to output the jobs and their status.

[void][reflection.assembly]::Loadwithpartialname(“Microsoft.Office.Word.Server") out-null
[Microsoft.Office.Word.Server.Conversions.ConversionJobStatus]::GetAllJobs("Word Automation Services", $null) foreach {
$status = new-object Microsoft.Office.Word.Server.Conversions.ConversionJobStatus("Word Automation Services", $_.JobId,$null);
$_;
$status;
$status.GetItems([Microsoft.Office.Word.Server.Conversions.ItemTypes]::Succeeded)
$status.GetItems([Microsoft.Office.Word.Server.Conversions.ItemTypes]::InProgress)
$status.GetItems([Microsoft.Office.Word.Server.Conversions.ItemTypes]::NotStarted)
$status.GetItems([Microsoft.Office.Word.Server.Conversions.ItemTypes]::Failed)
$status.GetItems([Microsoft.Office.Word.Server.Conversions.ItemTypes]::Canceled)

}

Wednesday, July 21, 2010

SP2010 Powershell Access Denied

If your using power shell to do anything (in my case upgrade user experience) and you get access denied even though you’re an administrator in as many places as you can think of. Add your account to shell admin using add-spshelladmin.