PowerShell Remoting не может использовать удаленные командлеты

2 Alexander Sinno [2017-01-16 22:02:00]

Цель:

Я пытаюсь написать сценарий, который будет автоматизировать неявное удаленное время для 100 или более пользователей ежедневно.

Я следую этому руководству дона Джонса; https://technet.microsoft.com/en-us/library/ff720181.aspx

Проблема:

Я получаю сообщение об ошибке после ввода моих пользовательских командлетов, например:

PS > cmdlet1 FooBar
d : The term 'cmdlet1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cmdlet1 FooBar
+ ~
    + CategoryInfo          : ObjectNotFound: (d:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Мой скрипт:

Set-Alias -Name gm -Value Get-TheModules -Description 'Grabs The Modules'
function Get-TheModules
{ 
  $ServerARM = New-PSSession -ComputerName serverA -Authentication Kerberos
  # Import Modules
  Write-Verbose -Message 'Importing Custom modules...'
  Invoke-command -ScriptBlock { import-module -Name 'Z:\Modules\ModuleA' } -Session $ServerARM
  Invoke-command -ScriptBlock { import-module -Name 'Z:\Modules\ModuleB' } -Session $ServerARM
  Invoke-command -ScriptBlock { import-module -Name 'Z:\Modules\ModuleC' } -Session $ServerARM
  Export-PSSession -Session $ServerARM -commandname *Cmdlet1,Cmdlet2,Cmdlet3* -OutputModule 'CustomCMDlets' -Force -AllowClobber
  Remove-PSSession -Session $ServerARM
  Import-Module CustomMods -prefix CRem
  Write-Verbose -Message 'Custom modules successfully imported...'
}

Результаты запуска сценария:

PS> GM

    Directory: Z:\Users\-\Documents\WindowsPowerShell\Modules\CustomCMDlets


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        1/16/2017   1:57 PM             99 CustomCMDlets.format.ps1xml
-a----        1/16/2017   1:57 PM            801 CustomCMDlets.psd1
-a----        1/16/2017   1:57 PM          41584 CustomCMDlets.psm1

Custom modules successfully imported...

Вопрос:

Учитывая мою цель и проблему, что я не понимаю в статье, где проблема в моем скрипте?

powershell


1 ответ


2 Решение briantist [2017-01-16 22:40:00]

Если ваше имя функции Cmdlet1 но вы импортируете его с помощью Import-Module -Prefix CRem, тогда имя импортируемой функции будет CRemCmdlet1.

Если функция была названа с правильным синтаксисом Verb-Noun, префикс будет помещен перед существительным, поэтому, если имя было Invoke-Cmdlet1 тогда при импорте с префиксом будет Invoke-CRemCmdlet1.