У меня есть несколько функций, используя тот же метод, чтобы вызвать другую функцию или делать определенные вещи:PowerShell рефакторинга функции в одной основной функции
function doMyFn
{
if ($getProject -match 'all')
{
foreach ($project in $projectAllowedLst)
{
# section a
# params to be passed to the script block below in this case it is $project
# the command or function that are being called are to be set here (based on the $project)
}
}
elseif ($getProject -match ',')
{
$projects = $getProject -split (',')
foreach ($project in $projects)
{
# section b
# params to be passed to the script block below in this case it is $project
# the command or function that are being called are to be set here (based on the $project)
}
}
elseif ($getProject -notmatch ',')
{
# section c
# params to be passed to the script block below in this case it is $getProject
# the command or function that are being called are to be set here (based on the $getProject)
}
}
другая функция, которая выглядит следующим образом:
if (testBeforeBackup $project){doProjectBackup $project} else {updateXML $project}
и блок с переключателем и функцией, как показано ниже. Все они используются в основной функции выше во всех разделах названного раздел а, б, в
#function 1
function one {
if ($getProject -match 'all')
{
foreach ($project in @('de','idm'))
{
copyXML $project
}
}
elseif ($getProject -match ',')
{
$projects = $getProject -split (',')
foreach ($project in $projects)
{
copyXML $project
}
}
elseif ($getProject -notmatch ',')
{
copyXML $getProject
}
}
#function 2
function two {
if ($getProject -match 'all')
{
foreach ($project in $projectAllowedLst)
{
$dstAppList[$project] = readNewAppName $project
}
}
elseif ($getProject -match ',')
{
$projects = $getProject -split (',')
foreach ($project in $projects)
{
$dstAppList[$project] = readNewAppName $project
}
}
elseif ($getProject -notmatch ',')
{
$dstAppList[$getProject] = readNewAppName $getProject
}
}
#function 4
funciton four {
if ($getProject -match 'all')
{
foreach ($project in $projectAllowedLst)
{
switch($project)
{
'de'{
if (testBeforeBackup $project)
{
deleteFiles $e_dst_folder $noDeleteEfolders
}
}
'home'{
if (testBeforeBackup $project)
{
deleteFiles $home_dst_folder $noDeleteHomefolders
}
}
'idm'{
if (testBeforeBackup $project)
{
deleteFiles $i_dst_folder $noDeleteifolders
}
}
}
copyProject $project
}
}
elseif ($getProject -match ',')
{
$projects = $getProject -split (',')
foreach ($project in $projects)
{
switch($project)
{
'de'{
if (testBeforeBackup $project)
{
deleteFiles $e_dst_folder $noDeleteEfolders
}
}
'home'{
if (testBeforeBackup $project)
{
deleteFiles $home_dst_folder $noDeleteHomefolders
}
}
'idm'{
if (testBeforeBackup $project)
{
deleteFiles $i_dst_folder $noDeleteifolders
}
}
}
copyProject $project
}
}
elseif ($getProject -notmatch ',')
{
switch($getProject)
{
'de'{
if (testBeforeBackup $getProject)
{
deleteFiles $e_dst_folder $noDeleteEfolders
}
}
'home'{
if (testBeforeBackup $getProject)
{
deleteFiles $home_dst_folder $noDeleteHomefolders
}
}
'idm'{
if (testBeforeBackup $getProject)
{
deleteFiles $i_dst_folder $noDeleteifolders
}
}
}
copyProject $getProject
}
}
есть некоторые переменные, которые будут доступны из сферы Script поэтому не стоит беспокоиться о других переменных.
Как я могу реорганизовать его лучше?
Я не думаю, что это ясно, что вы пытаетесь выполнить здесь. Считаете ли вы, что ваши вызовы функций содержат слишком много кода, поскольку есть много повторений? Вы пытаетесь объединить свои функции .... Также я вижу только одну функцию здесь и 3 набора кода. Я мог видеть, что у вас проблемы с путаницей, но я немного потерял это. – Matt
Если вы просто добавили блок 'Param ([Switch] $ A; [Switch] $ B; [Switch] $ C)' к вашей функции с помощью переключателей вы можете назвать свою функцию так, как вам нравится. – DarkLite1
Я добавил свои 3 функции, что они используют один и тот же шаблон, но для того, чтобы делать разные вещи внутри, я хочу объединить их все в одну функцию и вызвать все остальные функции в качестве параметров, которые будут использоваться в этой основной функции, или если любые другие предложения – Vagho