У меня есть следующий скрипт.
#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 - нет.
Есть идеи? Я знаю, что ошибка показывает пустую строку, но, как вы можете видеть, я избавляюсь от каждой пустой строки, когда запускаю разделение строки.