Назад | Перейти на главную страницу

ExportedCommand пустой настраиваемый модуль PowerShell

У меня есть собственный модуль в Powershell. Он состоит из двух файлов: Copy-Move.psm1 и Copy-Move.psd1.

В Copy-Move.psm1 у меня есть несколько функций, из которых я экспортирую только функцию «Copy-MoveFiles», используя следующую команду в конце

    function Copy-MoveFiles
    {..}

    Export-ModuleMember Copy-MoveFiles

Я поместил файлы в следующий каталог:

> C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Copy-Move

Я запустил командный экран Powershell и выполнил следующую команду:

    Import-Module Copy-Move

Никаких ошибок там и когда я выполняю следующую команду:

    Get-Module Copy-Move

Получаю такой результат:

    ModuleType Version    Name                                ExportedCommands
    ---------- -------    ----                                ----------------
    Manifest   1.0        Copy-Move

Как видите, у меня нет экспортированных функций, хотя я явно экспортировал функцию как член модуля. Манифест модуля не фильтрует экспортируемые функции, потому что я использовал подстановочный знак для экспорта функции в:

    FunctionsToExport = '*' 

Я, должно быть, кое-что забыл. Я делал это десятки раз, но на этот раз я не могу заставить что-то работать.

Код модуля:

Копировать-Переместить-psm1

function Copy-MoveFiles
{
    <#
    .SYNOPSIS
    Deze functie maakt het mogelijk bestanden te kopieren of te verplaatsen
    door middel van een configuratiebestand.

    .DESCRIPTION
    Deze functie maakt het mogelijk om meerdere kopieer- of verplaatstaken uit 
    te voeren d.m.v. een enkel configuratiebestand. 

    .PARAMETER config
    Pad naar het configuratiebestand

    .PARAMETER logdir
    Pad waar het logbestand gemaakt moet worden.

    .EXAMPLE
    Copy-MoveFiles -config "C:\config.csv" -logdir "C:\log"
    #>

    param
    (
        [Parameter(Mandatory=$true,Position=1)][string] $config = ""
        , [Parameter(Mandatory=$false,Position=2)][string] $logdir = $PSScriptRoot + "\Log"
    )

    # Controleren of het pad naar het configuratiebestand klopt
    if(Test-Path $config)
    {
        # Aanmaken van de timestamp
        $timestamp = Get-Date -format yyyyMMdd

        # Opzetten van het logfile
        $logfile = $logdir + "\logfile_$timestamp.log"

        # Laden van de verschillende acties
        $actions = Import-Csv $config -Delimiter ';'

        # Controleer of er acties aanwezig zijn
        if($actions.count -ge 1)
        {
            Write-Logfile -logfile $logfile -level 3 -text "Actions found. Starting up..."

            # Loop door alle acties heen
            foreach($a in $actions)
            {
                # Ophalen van de 
                $source = $a.source
                $destination = $a.destination
                $createsubfolder = $a.createsubfolder
                $action = $a.action
                $filter = $a.filter

                # Controleer of er een speciale subfolder aangemaakt moet worden
                if($createsubfolder -ne ''){
                    switch($createsubfolder)
                    {
                        "[date]"{$destination = $destination + "\$timestamp"}
                    }
                }

                # Kijken of de doeldirectory bestaat
                if(!(Test-Path($destination)))
                {
                    # Maak de doeldirectory aan als deze niet bestaat
                    Write-Logfile -logfile $logfile -level 1 -text "Destination $destination doesn't exist. Creating.."
                    Show-Message -level 1 -text "Destination $destination doesn't exist. Creating.."
                    New-Item -ItemType directory -Path $destination | Out-Null
                }

                # Check to see if the source folder exists
                if(Test-Path($source))
                {
                    # Get the files from the source folder
                    $files = Get-ChildItem -Path $source | where { ! $_.PSIsContainer }

                    # Check if the source folder contains files
                    if($files.count -ge 1)
                    {
                        # Bekijk welke actie uitgevoerd moet worden
                        switch($action.ToUpper())
                        {
                            "COPY" 
                            {
                                Write-Logfile -logfile $logfile -level 1 -text "Copying from $source to $destination."
                                Show-Message -level 1 -text "Copying from $source to $destination."

                                # Probeer het commando uit te voeren
                                try
                                {
                                    # Bekijk of een filter benodigd is
                                    if($filter -ne '')
                                    {
                                        ROBOCOPY $source $destination $filter | Out-Null
                                    }
                                    else
                                    {
                                        ROBOCOPY $source $destination | Out-Null
                                    }
                                } catch
                                {
                                    Write-Logfile -logfile $logfile -level 3 -text "Error executing ROBOCOPY command: $_"
                                    Show-Message -level 3 -text "Error executing ROBOCOPY command: $_"
                                }
                            }

                            "MOVE" 
                            {
                                Write-Logfile -logfile $logfile -level 1 -text "Moving from $source to $destination."
                                Show-Message -level 1 -text "Moving from $source to $destination."

                                # Probeer het commando uit te voeren
                                try
                                {
                                    # Bekijk of een filter benodigd is
                                    if($filter -ne ''){
                                        ROBOCOPY $source $destination $filter /MOV | Out-Null
                                    }
                                    else
                                    {
                                        ROBOCOPY $source $destination /MOV | Out-Null
                                    }
                                } catch
                                {
                                    Write-Logfile -logfile $logfile -level 3 -text "Error executing ROBOCOPY command: $_"
                                    Show-Message -level 3 -text "Error executing ROBOCOPY command: $_"
                                }

                            }

                        }

                    }
                    else
                    {
                        Write-Logfile -logfile $logfile -level 2 -text "No files found in $source for action $action from $source. Continuing..."
                        Show-Message -level 2 "No files found in $source for action $action from $source. Continuing..."
                    }
                }
                else
                {
                    Write-Logfile -logfile $logfile -level 2 -text "Source folder $source doesn't exist. Continuing..."
                    Show-Message -level 2 "Source folder $source doesn't exist. Continuing..."
                }
            }
        }
        else
        {
            Write-Logfile -logfile $logfile -level 3 -text "No actions defined! Exiting..."
            Show-Message -level 3 "No actions defined! Exiting..."
            Exit(0)
        }
    }
    else
    {
        Write-Logfile -logfile $logfile -level 3 -text "Couldn't find config file! Exiting ..."
        Show-Message 3 "Couldn't find config file! Exiting ..."
        Exit(0)
    }
}

Export-ModuleMember Copy-MoveFiles

Копировать-Move.psd1

    @{

# Script module or binary module file associated with this manifest.
# RootModule = ''

# Version number of this module.
ModuleVersion = '1.0'

# ID used to uniquely identify this module
GUID = 'a3af3a5b-d140-4450-98a1-4602a420e1bb'

# Author of this module
Author = 'Sander Stad'

# Company or vendor of this module
CompanyName = ''

# Copyright statement for this module
Copyright = ''

# Description of the functionality provided by this module
Description = 'Script voor het kopieren en verplaatsen van bestanden'

# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '3.0'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module
FunctionsToExport = '*'

# Cmdlets to export from this module
CmdletsToExport = '*'

# Variables to export from this module
VariablesToExport = '*'

# Aliases to export from this module
AliasesToExport = '*'

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess
# PrivateData = ''

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}

Кто-нибудь знает, что я сделал не так?