How to download a sharepoint aspx page from server using powershell
-
10-12-2019 - |
Question
I made some changes to sp aspx pages on a environment. I want to move these changes to my TFS. Usually one takes the pages using designer, save it to the desktop, and save that to TFS.
But is there a powershell way of automating this? - meaning just saving the desired aspx pages to the filesystem
Solution
I believe this is what you are looking for. You can export a specific file or object from the Export-SPWeb context, not the whole kitten kaboodle.
Export-SPWeb -identity "http://sharepoint" -ItemUrl "/default.aspx" -Path "c:\default.aspx"
Import-SPWeb -identity "http://sharepoint" -Path "C:\default.aspx"
OTHER TIPS
As I understood you need source of the file from content DB to check it into Source Control. Please, try the following code:
Add-PSSnapin Microsoft.Sharepoint.Powershell
$web = Get-SPWeb <path to web>
$file = $web.GetFile('<relative path to file>');
$bytes = $file.OpenBinary();
[System.IO.File]::WriteAllBytes('<path to file on your disk>', $bytes);
you should use WebRequest
$web = Get-SPWeb $webUrl
$path = "C:\file.aspx"
$request = [System.Net.WebRequest]::Create($url)
$request.UseDefaultCredentials = $true
#do web request - if exception -> item does not exist
try {
$response = [System.Net.WebResponse]$request.GetResponse();
if ($response.StatusCode -ne "OK") {
write-host "Error: " $response.StatusCode;
return;
}
# get contents
$stream = [System.IO.Stream]$response.GetResponseStream();
$streamReader = New-Object System.IO.StreamReader($stream);
$data = $streamReader.ReadToEnd();
$enc = [system.Text.Encoding]::UTF8
$filebytes = $enc.GetBytes($data)
$stream.Close();
$streamReader.Close();
# save file
[System.IO.File]::WriteAllBytes($Path, $filebytes)
}
catch [Exception]
{
write-host "exception" $error[0]
}
$web.Dispose()
EDIT: I was in good mood so I've completed also the code to download contents and save them to file system.
Another approach is possible :
$web = get-spweb http://server/yoursite
$file = $web.GetFile("$($web.Url)/pages/home.aspx")
[System.IO.File]::WriteAllBytes("$(gl)\$($file.Name)", $file.OpenBinary())
This will write in the current directory the content of the file "Pages/home.aspx"