|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Изменить название объекта в зависимости от i |
|
PowerShell - Изменить название объекта в зависимости от i
|
Новый участник Сообщения: 6 |
Добрый день! Буду благодарен, если кто-то поможет. Не очень разбираюсь в программировании, пытался найти ответ в google, но не удалось.
Есть скрипт вида: for ($i=0; $i - le 14; $i++) { Copy-Item-Path $path-Destination $A%$i%-Force } Так, естественно не работает, вопрос как сделать, чтобы у меня копирование шло в -Destination $A0 - $A14? Переменные: $path="\\fs03\Distrib\123.exe" $A0="\\fs03\inst0\123.exe" $A1="\\fs03\inst1\123.exe" $A2="\\fs03\inst2\123.exe" и так далее для A Заранее спасибо за ответ! |
|
Отправлено: 13:12, 21-02-2014 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Во-первых, убрать пробелы между «-» и названием параметра или операции. Во-вторых, где определения переменной «$path», «$A»?
|
Отправлено: 13:17, 21-02-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Поправил пробелы, определения переменных добавил
|
Последний раз редактировалось obseoe, 21-02-2014 в 13:35. Отправлено: 13:23, 21-02-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать obseoe, а зачем такое неудобное использование:
Цитата obseoe:
$sSourceFile = "\\fs03\Distrib\123.exe" $aDestPaths = "\\fs03\inst0", "\\fs03\inst1", "\\fs03\inst2" if(Test-Path -Path $sSourceFile -PathType Leaf) { $aDestPaths | ForEach-Object -Process { if(Test-Path -Path $_ -PathType Container) { Copy-Item -Path $sSourceFile -Destination $_ -Force } else { Write-Host "Can't find destination path [$_]" -ForegroundColor Red } } } else { Write-Host "Can't find source file [$sSourceFile]" -ForegroundColor Red } |
|
Отправлено: 14:41, 21-02-2014 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Спасибо за ответ!
Массив не догадался использовать, с другой стороны реальный путь для каждой переменной длиннее и их 14 штук, получается очень длинная строка, по-моему это не удобно. Поэтому я оставил эти переменные и изменил $aDestPaths = $aDestPaths = "\\fs03\inst0", "\\fs03\inst1", "\\fs03\inst2" на $aDestPaths = $A0, $A1,.., $A14 У вас очень красивый код, я пока так не умею ![]() Вот только не пойму как теперь изменить, чтобы выполнялось следующее: Кроме копирования файла в нужную директорию, мне нужно запустить этот файл из этой директории (то есть сначала сделать туда change dir, а потом запуск). Написал вот так, до момента смены директории, а дальше нужно сделать запуск и я запутался: $A0="\\fs03\inst0" $A1="\\fs03\inst1" $A2="\\fs03\inst2" $B0="\\fs03\inst0\123.exe" $B1="\\fs03\inst1\123.exe" $B2="\\fs03\inst2\123.exe" $sSourceFile = "\\fs03\Distrib\123.exe" $aDestPaths = $A0, $A1, $A2 $aDestFile = $B0, $B1, $B2 if(Test-Path -Path $sSourceFile -PathType Leaf) { $aDestPaths | ForEach-Object -Process { if(Test-Path -Path $_ -PathType Container) { Copy-Item -Path $sSourceFile -Destination $_ -Force cd $_ $aDestFile ; вот собственно тут я и не пойму как его добавить, сделать еще один цикл? Но какой? Или счетчик? } else { Write-Host "Can't find destination path [$_]" -ForegroundColor Red } } } else { Write-Host "Can't find source file [$sSourceFile]" -ForegroundColor Red } |
|
Отправлено: 15:58, 21-02-2014 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата obseoe:
Цитата obseoe:
|
||
Отправлено: 16:37, 21-02-2014 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:54, 21-02-2014 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать obseoe, ну, так Вам запускать-то приложение нужно на удалённых машинах, так?
|
Отправлено: 18:16, 21-02-2014 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Не совсем понимаю к чему вопрос, поэтому подробно распишу:
|
Отправлено: 19:13, 21-02-2014 | #9 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Вот так выглядит код на текущий момент:
$storageDir = "\\fs01\Distrib\Бухгалтерские\Бухсофт 2014" $webclient = New-Object System.Net.WebClient $url = "http://download.buhsoft.ru/Zarplata2014.exe" $file = "$storageDir\Zarplata2014.exe" $webclient.DownloadFile($url,$file) $sSourceFile = "\\fs01\Distrib\Бухгалтерские\Бухсофт 2014\Zarplata2014.exe" $aDestPaths = ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Agor\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Niso\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Fina\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Koe\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Goe\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Empty\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Empty2\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dsz\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso2\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso3\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\abc\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\abc_auto\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\aa\Zarplata2014.exe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\bb\Zarplata2014.exe" $aDestFolders = ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Agor", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Niso", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Fina", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Koe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Goe", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Empty", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Empty2", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dsz", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso2", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\Dso3", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\abc", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\abc_auto", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\aa", ' "\\fs01\Programs_Shared_Folder\Accounting\Buhsoft\Buhsoft2014\bb" if(Test-Path -Path $sSourceFile -PathType Leaf) { $aDestPaths | ForEach-Object -Process { if(Test-Path -Path $_ -PathType Container) { Copy-Item -Path $sSourceFile -Destination $_ -Force } else { Write-Host "Can't find destination path [$_]" -ForegroundColor Red } } } else { Write-Host "Can't find source file [$sSourceFile]" -ForegroundColor Red } В итоге файл скачивается и копируется во все нужные директории, далее нужно его запустить оттуда (сделав cd в текущую директорию запуска), не понимаю как. Буду благодарен за ответ! |
Отправлено: 15:38, 24-02-2014 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Помогите изменить название папки | laslo1405 | Microsoft Windows 7 | 7 | 14-09-2013 09:02 | |
[решено] Как изменить название(букву) системного логического диска? | Sviaga | Хочу все знать | 5 | 30-10-2012 07:28 | |
VBS/WSH/JS - [решено] Изменить название окна | AlexM | Скриптовые языки администрирования Windows | 3 | 26-11-2010 23:58 | |
CMD/BAT - [решено] Изменить название службы | Тарнум | Скриптовые языки администрирования Windows | 5 | 07-11-2010 03:35 | |
Как изменить название CD которое показывает проводник? | Guest | Microsoft Windows 95/98/Me (архив) | 4 | 30-09-2004 09:09 |
|