Скрипт PowerShell не загружается на другой компьютер - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть следующий скрипт для архивирования старых файлов:

# Zipping old files and sending them to a file on desktop if older than 60 days

Function Zip {    
  Param(
    [Parameter(Mandatory)]
    [string]$zipFile
    ,
    [Parameter(Mandatory)]
    [String[]]$toBeZipped
  )
  $null = & "C:\Program Files\7-Zip\7z.exe" A -tzip $zipFile $toBeZipped
}

$Days = 60    
$LastWrite = (Get-Date).Date.AddDays(-$Days)
$TargetFolder = "D:\Testing\*"

$Files = Get-Childitem $TargetFolder -Recurse |
  Where-Object { $_.LastWriteTime -le $LastWrite } |
    Select-Object -ExpandProperty Fullname

Zip "$($ENV:USERPROFILE)\Desktop\TEST.zip" $Files

Я работал, когда тестировал его на ВМ и одной физической машине.Однако, когда я попробовал это на другом компьютере, это потерпело неудачу.Вот что я получил:

Program '7z.exe' failed to run: The filename or extension is too long
At C:\Users\Admin\Documents\zip help.ps1:23 char:9
+ $null = & "C:\Program Files\7-Zip\7z.exe" A -tzip $zipFile $toBeZippe ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At C:\Users\Admin\Documents\zip help.ps1:23 char:1
+ $null = & "C:\Program Files\7-Zip\7z.exe" A -tzip $zipFile $toBeZippe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedEx 
   ception
    + FullyQualifiedErrorId : NativeCommandFailed

Скрипт не может использовать 7-zip.Другие компьютеры имели 7-Zip в том же пути к файлу, поэтому я не уверен, в чем заключается моя проблема.Любые входные данные будут оценены.

Редактировать: я могу подтвердить, что ошибка из-за длинного пути к файлу.Попробовал мой скрипт на файл с более коротким путем, и он работал просто отлично.

1 Ответ

0 голосов
/ 22 января 2019

Мне удалось выяснить, что вызвало это.Папка содержала много других папок внутри него.-Recurse заставлял скрипт смотреть в каждую папку, вызывая эту проблему.Все, что мне нужно было сделать, это настроить скрипт для удаления -Recurse, и он заработал.

...