Теперь пароль имеет следующий формат:
\"*******
Где он начинается с 2 зарезервированных символов \"
Если ваши пароли действительно приходят из JSON, такие как{"PASSWORD":"\"*******"}
, ваши пароли не начинаются с \"
- они начинаются с "
, потому что \
- это просто JSON escape-символ необходимо вставить литерал "
в char.в (всегда в двойных кавычках) строковом значении JSON.
Другими словами: если вы правильно проанализируете свой JSON, фактическое значение пароля будет:
"*******
. Вы можете проверить это какследует:
PS> ('{ "PASSWORD": "\"*******" }' | ConvertFrom-Json).PASSWORD
"*******
Ваша следующая проблема заключается в том, что вы встраиваете пароль в строку, представляющую исходный код PowerShell , и внутри этой строки выВы используете (встроенный) в одинарных кавычках ('...'
) для окружения значения [1] .
Для этого вы должны экранировать вложенные значения '
в виде ''
, чтобы не вызывать синтаксическую ошибку при последующем анализе PowerShell кода:
// Note the .Replace() calls
string PsCmd = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" +
vCenterName.Trim().Replace("'", "''") + "';$vCenterAdmin = '" +
vCenterUsername.Trim().Replace("'", "''") +
"' ;$vCenterPassword = '" + vCenterPassword.Replace("'", "''") + "';" +
System.Environment.NewLine;
При буквальном значении пароля "***'***
(и примеры значений для центра и имени пользователя), переменная C # PSCmd
получит строку со следующим буквенным содержанием :
add-pssnapin VMware.VimAutomation.Core; $vCenterServer = 'center1';$vCenterAdmin = 'jdoe' ;$vCenterPassword = '"***''***';
[1] И одинарные кавычки являются правильным выбором, потому что использование двойных кавычек может привести к нежелательномуetation (интерполяция строк) встроенного значения с помощью PowerShell.