У меня есть несколько веб-сервисов, которые я пытаюсь использовать PowerShell для установки на сервере DEV. Я хочу включить в сценарий раздел, который копирует все файлы и папки из промежуточной области в соответствующую папку на сервере DEV.Не найден позиционный параметр, который принимает аргумент ' *'
Для этого я создал два параллельных массива строк - один из которых содержит прямые пути к файлам промежуточных папок, а другой - имена каждой папки на сервере DEV (я использую пару других переменных для хранения остальная часть каталога).
Я хотел бы создать цикл for
и просто перебрать оба массива, чтобы завершить передачу файлов/папок с этапа на сервер dev. Однако, когда цикл выполняет команду copy-item
дает эту ошибку каждый раз, когда
Copy-Item: Позиционный параметр не может быть найден, который принимает аргумент «*».
Если я решил не использовать цикл, ошибка исчезнет, и файлы будут переданы правильно. Только пару дней, новых для PowerShell, поэтому я не уверен, что происходит/не удалось найти что-либо конкретное в этом в Интернете.
Переменные
#web services
$periscopeWebServices = "periscopeWebServices"
$periscopeRetrieveComments = "periscopeRetrieveComments"
$periscopeRetrieveGeneral = "periscopeRetrieveGeneral"
$periscopeRetrieveMasterSubs = "periscopeRetrieveMasterSubs"
$periscopeRetrieveProducers = "periscopeRetrieveProducers"
$periscopeRetrieveProfiles = "periscopeRetrieveProfiles"
$periscopeRetrieveRelationships = "periscopeRetrieveRelationships"
$periscopeSearch = "periscopeSearch"
$periscopeServicesArray = @($periscopeRetrieveComments, $periscopeRetrieveGeneral,
$periscopeRetrieveMasterSubs, $periscopeRetrieveProducers,
$periscopeRetrieveProfiles, $periscopeRetrieveRelationships,
$periscopeSearch)
#staging areas
$stagingComments = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveComments"
$stagingGeneral = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveGeneral"
$stagingMasterSubs = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveMasterSubs"
$stagingProducers = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveProducers"
$stagingProfiles = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveProfiles"
$stagingRelationships = "\\install\PeriscopeServices\periscopeWebServices\periscopeRetrieveRelationships"
$stagingSearch = "\\install\PeriscopeServices\periscopeWebServices\periscopeSearch"
$stagingArray = @($stagingComments, $stagingGeneral, $stagingMasterSubs, $stagingProducers
$stagingProfiles, $stagingRelationships, $stagingSearch)
#server variables
$domain = "InsideServices.dev.com"
$directory = "E:\webcontent"
$domainpath = "$directory\$domain"
Loop - бросает ошибку 'копирования элемента'
#copy files
Write-Host "Copying Files" -ForegroundColor Yellow
For ($i=0; $i -lt $periscopeServicesArray.Length; $i++)
{
Write-Host "Copying $($periscopeServicesArray[$i])" -ForegroundColor Yellow
if(Test-Path -path "$domainpath\$periscopeWebServices\$($periscopeServicesArray[$i])")
{
copy-item -Path $($stagingArray[$i])\* -Destination $domainpath\$periscopeWebServices\$($periscopeServicesArray[$i]) -recurse -Force
}
}
Успешная команда копирования элемент
copy-item -Path $stagingComments\* -Destination $domainpath\$periscopeWebServices\$periscopeRetrieveComments -recurse -Force
Так что теперь он говорит, что не может принять аргумент +. Нужно ли цитировать суб-выражение? – NealR
Nevermind, содержащий переменные/строку в скобках, решил проблему: '($ ($ stagingArray [$ i]) + '\ *')' – NealR