none
скрипт поиска и копирования powershell RRS feed

  • Вопрос

  • добрый день! ситуация такая.

    решил сэкономить в компании на 1 лицухе антивируса нод, файлы обновления хранятся в пути "источник", копируются без проблем файлы формата ver  и nup, но есть файл update.ver который каждый раз создается в подпапках, в названии которых указан айпи адрес сервера обновлений, и без него антивирусы компании не обновляются. 

    Задача состоит в следующем:

    Это работает норм

    Copy-Item -Path "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\*" -Include *.nup  -Destination "\\esetserver\c$\inetpub\wwwroot" -Recurse
    Copy-Item -Path "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\*" -Include *.ver  -Destination "\\esetserver\c$\inetpub\wwwroot" -Recurse

    помогите написать скрипт поиска самого свежего файла update.ver в папке и подпапках C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\ и копирования его в \\esetserver\c$\inetpub\wwwroot с заменой



    • Изменено Ilya Bokov 11 ноября 2017 г. 11:18
    11 ноября 2017 г. 11:16

Ответы

  • Where-Object : Не удается привязать параметр "FilterScript". Не удается преобразовать значение "name" типа "System.Stri
    ng" в тип "System.Management.Automation.ScriptBlock".
    строка:1 знак:77
    + gci "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\" -recurse | where <<<<  name -eq 'update.ver' | sort date
    | select -last 1
        + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBindingException
        + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

    У Вас PowerShell старой версии по всей видимости

    gci "C:\Porno\Best\Top 2017\" -recurse | where {$_.name -eq 'update.ver'} | sort date | select -last 1

    Едиственное что нужно наверное брать не -Last 1 а -First 1


    The opinion expressed by me is not an official position of Microsoft


    • Изменено Vector BCOModerator 11 ноября 2017 г. 13:50
    • Помечено в качестве ответа Ilya Bokov 11 ноября 2017 г. 13:52
    11 ноября 2017 г. 13:48
    Модератор

Все ответы

  • $UV = gci -recurse | where name -eq 'update.ver' | sort date | select -last 1
    
    Copy-item $UV.FullName \\esetserver\c$\inetpub\wwwroot -force



    The opinion expressed by me is not an official position of Microsoft

    11 ноября 2017 г. 11:30
    Модератор
  • а как в вашем коде указать путь где искать?

    11 ноября 2017 г. 11:35
  • а как в вашем коде указать путь где искать?

    $UV = gci C:\Porno\Best\Top2017\ -recurse | where name -eq 'update.ver' | sort date | select -last 1

    Copy-item $UV.FullName \\esetserver\c$\inetpub\wwwroot -force



    The opinion expressed by me is not an official position of Microsoft


    11 ноября 2017 г. 11:40
    Модератор
  • не работает( 
    11 ноября 2017 г. 11:43
  • ругается на пробелы в пути 
    11 ноября 2017 г. 11:46
  • засуньте путь в кавычки "C:\Porno\Best\Top 2017\"


    The opinion expressed by me is not an official position of Microsoft



    11 ноября 2017 г. 12:35
    Модератор
  • уже пробовал. и в одинарные, и в двойные. не копируется файл, даже локально

    $UV = gci "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\" -recurse | where name -eq 'update.ver' | sort date | select -last 1

    Copy-item $UV.FullName C:\ -force

    так же в ковычки засовывал C:\


    • Изменено Ilya Bokov 11 ноября 2017 г. 12:42
    11 ноября 2017 г. 12:41
  • уже пробовал. и в одинарные, и в двойные. не копируется файл, даже локально

    $UV = gci "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\" -recurse | where name -eq 'update.ver' | sort date | select -last 1

    Copy-item $UV.FullName C:\ -force

    так же в ковычки засовывал C:\


    Если что то не работает приводите полные ошибки

    Что выдаст команда

    gci "C:\Porno\Best\Top2017\" -recurse | where name -eq 'update.ver' | sort date | select -last 1


    The opinion expressed by me is not an official position of Microsoft

    11 ноября 2017 г. 13:27
    Модератор
  • Where-Object : Не удается привязать параметр "FilterScript". Не удается преобразовать значение "name" типа "System.Stri
    ng" в тип "System.Management.Automation.ScriptBlock".
    строка:1 знак:77
    + gci "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\" -recurse | where <<<<  name -eq 'update.ver' | sort date
    | select -last 1
        + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBindingException
        + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand
    11 ноября 2017 г. 13:29
  • Where-Object : Не удается привязать параметр "FilterScript". Не удается преобразовать значение "name" типа "System.Stri
    ng" в тип "System.Management.Automation.ScriptBlock".
    строка:1 знак:77
    + gci "C:\ProgramData\ESET\ESET Endpoint Antivirus\Updfiles\" -recurse | where <<<<  name -eq 'update.ver' | sort date
    | select -last 1
        + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBindingException
        + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

    У Вас PowerShell старой версии по всей видимости

    gci "C:\Porno\Best\Top 2017\" -recurse | where {$_.name -eq 'update.ver'} | sort date | select -last 1

    Едиственное что нужно наверное брать не -Last 1 а -First 1


    The opinion expressed by me is not an official position of Microsoft


    • Изменено Vector BCOModerator 11 ноября 2017 г. 13:50
    • Помечено в качестве ответа Ilya Bokov 11 ноября 2017 г. 13:52
    11 ноября 2017 г. 13:48
    Модератор
  • спасибо огромное! все работает! 
    11 ноября 2017 г. 13:52