Remote Invoke-Command - функция / командлет не найден - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть следующий скрипт:

param(
    [string[]]$servers
)

function Write-Info($message) {
}

function Introspect($server) {
    Write-Info "about to do something on server"    
    // other powershell stuff that works
}

Foreach ($server in $servers) {
    Invoke-Command -ComputerName $server -ScriptBlock ${function:Introspect} -ArgumentList $server -credential 'MyUser'
}

То, что я пытаюсь вызвать на удаленном сервере, вот так (из powershell):

.\myscript.ps1 server1,server2,server3

Сценарий выполняется, но проблема в том, что я получаю ошибку, относящуюся к функции Write-Info, например:

The term 'Write-Info' is not recognised as the name of a cmdlet, function, script file, or operable program

Функция Introspect работает нормально, если я встраиваю функцию внутрь, но, думаю, это относится к функции, отсутствующей на удаленном сервере.

Как я могу решить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 03 ноября 2018

Удалось решить эту проблему, внедрив функцию «отсутствует» в рабочую:

param(
    [string[]]$servers
)

function Introspect($server) {

    function Write-Info($message) {
    }
    Write-Info "about to do something on server"    
    // other powershell stuff that works

}

Foreach ($server in $servers) {
    Invoke-Command -ComputerName $server -ScriptBlock ${function:Introspect} -ArgumentList $server -credential 'MyUser'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...