Powershell для копирования файлов с одного сервера на другой и переименования с использованием подстроки - PullRequest
0 голосов
/ 24 апреля 2018

и заранее спасибо !!! Мне удалось успешно переместить документы с одного сервера (sharepoint) на другой (импульсный). Однако каждый документ начинается с HC_.jpg. Как я могу переместить документ и переименовать одновременно. В настоящее время я использую два отдельных сценария и две отдельные запланированные задачи, что не идеально.

Первый сценарий, который перемещает документ с SharePoint Server:

######################## Start Variables ########################
######################## Adam's Script######################
$destination = "\\pulse-dev.domain.com\C$\ProfilePhotos\"
$webUrl = "http://mysites-dev.domain.com"
$listUrl = "http://mysites-dev.domain.com/user photos/"
##############################################################

$web = Get-SPWeb -Identity $webUrl
$list = $web.GetList($listUrl)

function ProcessFolder {
param($folderUrl)
$folder = $web.GetFolder($folderUrl)
foreach ($file in $folder.Files) {
#Ensure destination directory
$destinationfolder = $destination + "/" + $folder.Url 
if (!(Test-Path -path $destinationfolder))
{
$dest = New-Item $destinationfolder -type directory 
}
#Download file
$binary = $file.OpenBinary()
$stream = New-Object System.IO.FileStream($destinationfolder + "/" + $file.Name), Create
$writer = New-Object System.IO.BinaryWriter($stream)
$writer.write($binary)
$writer.Close()
}
}

#Download root files
ProcessFolder($list.RootFolder.Url)
#Download files in folders
#foreach ($folder in $list.Folders)   {

#ProcessFolder($folder.URL)
#}

Второй сценарий, который запускается на сервере Pulse после завершения первого сценария

$dir= "C:\ProfilePhotos\"
CD $dir
Get-ChildItem -Recurse |
where-Object {$_.Name -match 'HC_'} |

Rename-Item -NewName {$_.Name -replace 'HC_', ''}

1 Ответ

0 голосов
/ 24 апреля 2018

Заменить

$stream = New-Object System.IO.FileStream($destinationfolder + "/" + $file.Name), Create

с

$stream = New-Object System.IO.FileStream($destinationfolder + "/" + ($file.Name -replace "^HC_")), Create
...