#function #powershell
#функция #powershell
Вопрос:
Пытаюсь включить функцию в сценарий PowerShell. Я получаю сообщение о том, что функция не существует.
У меня есть функция чуть ниже, где я создаю параметры. Я предполагаю, что я что-то упускаю. У меня есть несколько папок, которые я хочу создать резервную копию, и я хочу вызвать функцию для каждой папки.
ЗДЕСЬ НАЧИНАЕТСЯ КОД (приведенный выше код и создание pram остановлены для краткости).
$ImagesSaveTo = "s3://crisma-backup/HERTRICH/Milford/$dow/images"
#
# Call Backup
BackupCrismaByShop -$LogFile $CrismaSource $CrismaSaveTo $ImagesSource
# Begin Backup Function
# ------------------------------------------------------------------------
function BackupCrismaByShop {
param(
[string]$LogFile,
[string]$CrismaSource,
[string]$CrismaSaveTo,
[string]$ImagesSource
)
# Backup script....
}
Комментарии:
1. Функции должны быть определены ранее в сценарии, чем там, где вы пытаетесь их вызвать — попробуйте переместить определение функции выше, где вы ее вызываете, и посмотрите, поможет ли это.
Ответ №1:
Powershell — это интерпретируемый язык, это означает, что файлы читаются сверху вниз и интерпретируются так, как будто мы говорим.
Итак, если функция вызывается до того, как вы ее определили, интерпретатор Powershell не знает, о чем вы говорите.
Вы можете попробовать изменить порядок своего кода, и это должно сработать:
# DEFINE FUNCTION
function BackupCrismaByShop {
param(
[string]$LogFile,
[string]$CrismaSource,
[string]$CrismaSaveTo,
[string]$ImagesSource
)
# Backup script....
}
# YOUR VARIABLES AND OTHER STUFF
$ImagesSaveTo = "s3://crisma-backup/HERTRICH/Milford/$dow/images"
# CALLING THE FUNCTION
BackupCrismaByShop -$LogFile $CrismaSource $CrismaSaveTo $ImagesSource
Я могу представить, что вы используете Powershell ISE для написания кода. Позвольте мне предложить вам попробовать Visual Studio Code. Это дало бы вам некоторые рекомендации и предупреждения при кодировании таких переменных, которые вы не используете, функций, вызываемых, но еще не определенных, и т.д.
Спасибо.