Ошибка Get-Content при передаче переменной в качестве пути - сценарий Powershell - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующий скрипт.

#Script publicador
$carpetas = Get-ChildItem -Directory -Path  C:\Publicaout | Sort-Object {[int]($_ -replace '(\d+).*', '$1')} | Format-Wide -Column 1 -Property Name | Out-String

foreach ($line in $carpetas.Split([string[]]"`r`n", [StringSplitOptions]::RemoveEmptyEntries))
{
  $destino = Get-Content c:\Publicaout\$line\Destino.txt
  echo $destino
  #Copy-Item -Path C:\Publicaout\$line -Recurse -Destination C:\temp\ -ToSession $session -Force 
  #Invoke-Command -ComputerName $destino -Credential $cred -ScriptBlock {Invoke-Expression -Command:"cmd.exe /c 'c:\temp\$Using:line\publicador.bat'"}
  #Invoke-Command -ComputerName $destino -Credential $cred -ScriptBlock {Remove-Item \\$Using:destino\c$\temp\$Using:line -Recurse -Force}

}

Что он делает: сначала он сортирует подпапки по порядку номеров в папке с именем Publicaout в C:, затем я получаю список этих подпапок в порядок, и я использую для каждого, чтобы использовать каждый элемент списка в качестве параметра, для каждой из этих папок я копирую его на удаленный сервер, а затем запускаю сценарий, который находится в этой скопированной папке, после этого, Я удаляю эту папку, чтобы не оставлять остатков.

Пока все хорошо, но теперь в каждой папке есть текстовый файл, содержащий целевой сервер, на который должна быть скопирована каждая указанная папка c. Итак, я полагал, что добавления пути Get-Content + к файлу с использованием переменной $line, содержащей имя подпапки, будет достаточно, но каждый раз, когда я запускаю скрипт, я получаю эту ошибку:

Get-Content : Cannot find path 'C:\Publicaout\3000\Destino.txt' because it does not exist.
At C:\Users\elmarichaladmin\Documents\publicador.ps1:18 char:14
+   $destino = Get-Content c:\Publicaout\$line\Destino.txt
+              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Publicaout\3...   \Destino.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

Это происходит с каждой папкой, у меня есть 5 папок с именами 1, 99,654,3000, 65404. Это действительно странно, потому что команда Copy работает идеально, а Get-Content - нет.

Есть идеи? Я знаю, что ошибка показывает пустую строку, но, как вы можете видеть, я избавляюсь от каждой пустой строки, когда запускаю разделение строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...