Более безопасное разрешение:
Я работал немного больше и нашел лучший ответ, который сохраняет режим NoLanguage
JEA
. Это полезно, поскольку ConstrainedLanguage
Mode и FullLanguage
Mode дают слишком много энергии для модификации даже в JEA
ограниченных аккаунтах.
В итоге мне пришлось добавить два дополнительных командлета в список VisibleCmdlets
.
Get-Variable
и Set-Variable
.
Как только я добавил их, я смог установить систему в режим NoLanguage
, а затем передать свои локальные переменные на удаленный хост с помощью команды ICM
, указанной ниже:
Invoke-Command -Session $session -scriptblock {AnalyzeRatebook -u"$Using:user" -p"$Using:pass" -o"$Using:log" $Using:manifest}
Альтернативное разрешение
Проблема возникла по трем причинам (редактировать: математика сложна):
1. Режим без языка был настроен. Это изменено в файле PSSC.
2. Ошибка пользователя с тем, как я определил Param в файле PSRC.
3. ICM необходимо изменить в том, как он достиг.
Элемент 1:
Чтобы решить эту проблему, я зашел в файл JEA-A1.PSSC
на удаленной системе, а затем (в этом случае никогда не определялся языковой режим) добавил новую строку в файл с именем LanguageMode.
LanguageMode = 'FullLanguage'
Элемент 2
Затем я обновил пользовательскую функцию, которую я написал в файле JEA-A1.PSRC
, с правильным синтаксисом.
Оригинал:
# Functions to define when applied to a session
FunctionDefinitions = @{
'Name' = 'AnalyzeRatebook'
'ScriptBlock' = {
Param($user),($pass),($log),($manifest)
& $binpath\AOImportCmd.exe "-a" $user $pass $log $manifest
$LASTEXITCODE
}
}
Исправлено:
# Functions to define when applied to a session
FunctionDefinitions = @{
'Name' = 'AnalyzeRatebook'
'ScriptBlock' = {
Param($user,$pass,$log,$manifest)
& $binpath\AOImportCmd.exe "-a" $user $pass $log $manifest
$LASTEXITCODE
}
}
Позиция 3:
Наконец, необходимо обновить Invoke-Command
вызов для точного чтения и анализа переменных. В моем случае я не мог установить их в одну строку, так как система ожидала паузы между значениями, чтобы показать, что они были.
Invoke-Command -Session $session -scriptblock {Param($user,$pass,$log,$manifest) AnalyzeRatebook -u"$user" -p"$pass" -o"$log" $manifest} -ArgumentList $user,$pass,$log,$manifest
Теперь это работает и передает значения правильно.