Comment puis-je inclure une localement la fonction définie lors de l'utilisation de PowerShell de la Commande Invoke-command pour l'accès distant?

J'ai l'impression que je suis absent quelque chose qui devrait être évident, mais je ne peux pas comprendre comment le faire.

J'ai un script ps1 qui a une fonction définie en elle. Il appelle la fonction, puis essaie de l'utiliser à distance:

function foo
{
    Param([string]$x)

    Write-Output $x
}

foo "Hi!"

Invoke-Command -ScriptBlock { foo "Bye!" } -ComputerName someserver.example.com -Credential someuser@example.com

Ce court exemple de script affiche "Bonjour!" et puis se bloque en disant: "Le terme 'foo' n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou d'un programme exécutable."

Je comprends que la fonction n'est pas définie sur le serveur distant, car il n'est pas dans le ScriptBlock. J'ai pu redéfinir là, mais je préfère ne pas. J'aimerais définir la fonction une fois et l'utiliser localement ou à distance. Est-il une bonne façon de le faire?

InformationsquelleAutor David Hogue | 2012-07-06