PowerShell — Моя первая попытка функции не может найти функцию

#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. Это дало бы вам некоторые рекомендации и предупреждения при кодировании таких переменных, которые вы не используете, функций, вызываемых, но еще не определенных, и т.д.

Спасибо.