Запуск скрипта в PowerShell в передачей аргументов из cmd файла

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Eugie, Romeo

falconi
Сообщения: 2
Зарегистрирован: Ср окт 11, 2017 5:46 pm

Запуск скрипта в PowerShell в передачей аргументов из cmd файла

Сообщение falconi » Ср окт 11, 2017 6:10 pm

Доброго дня!

Опыта в программировании нет. Поэтому сразу прошу прощения за все ляпы и ересь...

Стоит задача: запустить скриптом Excel, открыть определенный документ и выполнить макрос.
Я сделал это как cмог в PowerShell.
Но запускать этот скрипт нужно из программы, которая не дружит с PowerShell, а соответственно запускаю из этой программы cmd-файл, следующего содержания:

Код: Выделить всё

powershell -ExecutionPolicy bypass -File C:\Script\NEW_Sticker_2.ps1
И далее выполняется сам NEW_Sticker_2.ps1:

Код: Выделить всё

$excel = new-object -comobject excel.application
$xlprocess = Get-Process excel 
$excel.Visible = $False
$excel.DisplayAlerts = $False
$excelFiles = Get-ChildItem -Path C:\workfiles\ -Include *.xls, *.xlsx -Recurse
Foreach($file in $excelFiles)
{
$workbook = $excel.workbooks.open($file.fullname)
$worksheet = $workbook.worksheets.item(1)
$excel.Run("Personal.xlsb!Export")
}
$workbook.Close()
$excel.Quit()
$xlprocess | kill[/B]
Все работает, но только с постоянно прописанным путём к обрабатываемому файлу (C:\workfiles\).

Пожалуйста, помогите.
Можно ли из первого cmd-файла как-нибудь передать параметром путь к обрабатываемому файлу, который каждый раз меняется?
Первому файлу этот параметр (путь) может сообщить запускающая его программа как параметр...

Или может я вообще левой рукой правое ухо чешу?
И можно все прощу сделать...

Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: Вт мар 02, 2004 5:25 pm
Откуда: Крым, Севастополь
Контактная информация:

Re: Запуск скрипта в PowerShell в передачей аргументов из cmd файла

Сообщение Romeo » Ср окт 11, 2017 7:34 pm

Да можно. Вот так:

Код: Выделить всё

powershell -ExecutionPolicy bypass -File C:\Script\NEW_Sticker_2.ps1 C:\workfiles
Обращаться к параметру внутри PowerShell скрипта можно будет через $args[0].

P.S. А что помешало нагуглить данный вопрос? Я сам не знаю PowerShell совсем, но гугл сразу подсказал куда мне идти и что читать.

P.P.S. Раздел неправильно выбран. Shell и PowerShell - вещи абсолютно разные.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

falconi
Сообщения: 2
Зарегистрирован: Ср окт 11, 2017 5:46 pm

Re: Запуск скрипта в PowerShell в передачей аргументов из cmd файла

Сообщение falconi » Ср окт 11, 2017 8:57 pm

Romeo, спасибо!

Гуглил, пробовал этот метод, но только отправляя аргумент(путь) из программы в cmd-файл. И он не работал.
Сейчас попробовал сразу задать путь в cmd-файле. все работает.
Значит проблема в передаче аргумента...

Ответить