Ошибка ссылки на объект Powershell Export-ModuleMember - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь научиться писать скрипты в Azure Powershell и имею конечную цель - создать скрипт, который будет читать в электронной таблице Excel спецификации для виртуальных машин Azure (например, тип виртуальной машины, теги, часовой пояс и AD). группа, чтобы добавить его, и т. д.). Если у кого-нибудь есть ссылки на учебники для этого, это было бы очень полезно.

В настоящее время я падаю перед лицом того, что должно быть чем-то относительно простым. Экспортные функции. Я открыл Powershell ISE и попытался запустить следующий код (взят из одного из примеров, которые я нашел в MSDN):

Function New-Test
{
    Write-Output 'I am New-Test function'
}
Export-ModuleMember -Function New-Test

function Validate-Test
{
    Write-Output 'I am Validate-Test function'
}
function Start-Test
{
    Write-Output 'I am Start-Test function'
}
Set-Alias stt Start-Test
Export-ModuleMember -Function Start-Test -Alias stt

Но я получаю сообщение об ошибке: «Export-ModuleMember: ссылка на объект не установлена ​​для экземпляра объекта»

Я попытался сохранить этот код в файле ps1 с именем test, а затем перейти в каталог, в котором он находится, и запустить "./test.ps1", но появляется та же ошибка.

Есть идеи, что я здесь делаю не так? Здесь, безусловно, есть что-то фундаментальное, чего мне не хватает.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Я тоже столкнулся с этой ошибкой. Для себя я обнаружил, что у «Export-ModuleMember» не может быть разрывов строк между ним и концом последней скобки функции.

Примеры:

Ошибка ссылки на объект модуля импорта:

function Test-Import{
    Write-Host "import function success"
}

Export-ModuleMember -Function Test-Import

Модуль импорта, без ошибок :

function Test-Import{
    Write-Host "import function success"
}
Export-ModuleMember -Function Test-Import
0 голосов
/ 16 сентября 2018

Если вы планируете писать много кода в сценариях PowerShell, то настройка модуля и управление тем, что вы экспортируете (или нет) с помощью Export-ModuleMember, является правильным решением. Поэтому, если вы планируете создать свой собственный модуль для использования в дальнейших сценариях PowerShell, то вы на правильном пути.

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

Вы можете выполнить пошаговое руководство для этого здесь: PowerShell: Сборка модуля, по одному микрошагу за раз

...