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
.