如何使用PowerShell从服务器下载SharePoint Aspx页面
-
10-12-2019 - |
题
我对环境中的SP ASPX页面进行了一些更改。我想将这些更改移动到我的TFS。通常是使用Designer采用页面,将其保存到桌面,并将其保存到TFS。
但是否有能力自动化的方式? - 意思只是将所需的aspx页面保存到文件系统
解决方案
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"
其他提示
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"