Мой агент Puppet — Windows Server 2012. Я пытаюсь предоставить права db пользователю AD. Если я попытаюсь назначить права пользователю AD, имя которого не содержит пробелов, то скрипт работает нормально. Ранее имя пользователя без пробела также не работало, но когда я добавил дополнительную косую черту ('abc\\s_sql'
), оно сработало для этого пользователя. Для имени пользователя с пробелом он вообще не работает, хотя Puppet показывает, что он успешно запущен.
[root@pe-server] cat grant_read.pp
define db::grant_read (
$grant_read_params
) {
$grant_read_ps = $grant_read_params[grant_read_ps]
$grant_read_sql = $grant_read_params[grant_read_sql]
$read_user = $grant_read_params[read_user]
$db_name = $grant_read_params[db_name]
utils::powershell_script { "Grant read access to user $read_user on $db_name":
script => $grant_read_ps,
parameter => "$grant_read_sql $read_user $db_name",
}
}
[root@pe-server] cat site.pp
node 'pe-agent.abc.com' {
$grant_read_params_Support_PROD = {
'grant_read_ps' => 'c:/db/grant_read.ps1',
'grant_read_sql' => 'c:/db/grant_read.sql',
#'read_user' => 'abc\\s_sql',
'read_user' => 'abc\\APP Support_PROD',
'db_name' => 'ABC_MASTER',
}
db::grant_read { "Granting read access to tom on some db":
grant_read_params => $grant_read_params_Support_PROD
}
}
[root@pe-server] cat powershell_script.pp
define utils::powershell_script (String $script, String $parameter = '') {
$powershell = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -NoProfile -NoLogo -NonInteractive'
exec { "Running $script on agent with parameter $parameter":
command => "$powershell -File $script $parameter",
logoutput => 'on_failure',
timeout => 900,
}
}
Пробовал несколько перестановок и комбинаций как в аргументе файла site.pp, так и в файле grant_read.pp, но, похоже, ничего не работает.
Любая идея, как я могу справиться с этим?
parameter => "$grant_read_sql \"$read_user\" $db_name",
- person Ansgar Wiechers   schedule 14.03.2017$read_user
, предполагая, что переменная будет передана вutils::powershell_script
как есть без интерполяции здесь. Не могли бы вы объяснить или указать какой-нибудь ресурс, который может быть полезен для понимания поведения косой черты в таких случаях? Я буду очень признателен, если вы опубликуете приведенный выше комментарий в качестве ответа (и, если возможно, какую-нибудь справочную ссылку или небольшое объяснение, почему сработала двойная кавычка). Спасибо - person Technext   schedule 14.03.2017