У меня проблемы после того, как папка скопирована в другое место, мне нужно переименовать папки в каталоге, чтобы удалить «.deploy» с конца, но я получаю следующую ошибку ниже. У меня есть Googled для полномочий администратора PowerShell, но, похоже, не может найти «уловку» для моего сценария.Переименование папок после копирования
Get-Content : Access to the path 'C:\OldUserBackup\a.deploy' is denied. At C:\PSScripts\DesktopSwap\TestMergeDir.ps1:28 char:14 + (Get-Content $file.PSPath) | + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (C:\OldUserBackup\a.deploy:String) [Get-Content], UnauthorizedAccessException + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand
Вот что у меня есть:
$UserName = [Environment]::UserName
$CurrUser = [Environment]::UserName + '.deploy'
$OldUserDir = 'C:\OldUserBackup'
$CurrDate = Get-Date -format G
$PathExist = Test-Path $OldUserDir
if ($PathExist -eq $true) {
#Copy Desktop, Downloads, Favorites, Documents, Music, Pictures, Videos
Copy-Item -Path $OldUserDir -Destination C:\Users\$UserName\Desktop\CopyTest -Recurse -Force
$configFiles = Get-ChildItem $OldUserDir *.deploy -rec
foreach ($file in $configFiles) {
(Get-Content $file.PSPath) |
Foreach-Object { $_ -replace ".deploy", "" } |
Set-Content $file.PSPath
}
}
Бесполезные использование 'ForEach-Object'. «Переименовать-элемент» можно прочитать из конвейера, так что вы можете напрямую передать ему результат «Get-ChildItem». –
@AnsgarWiechers Но как вы получите доступ к старому имени, чтобы заменить '.deploy'? –
'... | Переименовать-Item -NewName {$ _. Name -replace '\ .deploy $'} '(обратите внимание на фигурные скобки). –