Я хотел бы передать приведенную ниже запись в строку cmd из PowerShell. Что делать?Как избежать этих символов в powershell [], "", |
["192.168.10.1|443|Atulkatiyar|passw$h"]
Как написать команду PowerShell и выполнить ее в командной строке?
Я хотел бы передать приведенную ниже запись в строку cmd из PowerShell. Что делать?Как избежать этих символов в powershell [], "", |
["192.168.10.1|443|Atulkatiyar|passw$h"]
Как написать команду PowerShell и выполнить ее в командной строке?
cmd --% /c ["192.168.10.1|443|Atulkatiyar|passw$h"]
--%
является последовательность символов, все после того, как он передается исполняемому неизмененном
Это не помогло –
ну, я не уверен, чего вы пытаетесь достичь, '^' - это escape-символ в cmd, проверьте обновленный ответ. – 4c74356b41
Параметр '-%' и [недоступен до версии PowerShell v3] (https://blogs.msdn.microsoft.com/powershell/2012/06/13/new-v3-language-features/) , –
cmd.exe /C "echo `[`"192.168.10.1`|443`|Atulkatiyar`|passw`$h`"`]"
Ничего не помогло. Ниже приведен сценарий моей силовой оболочки, который он выполнит в командной строке: $ avconfig = "' ['" 192.168.1.21' | 443' | atulkatiyar '| passw' $ h'" ']" write-host "avconfig:" $ avconfig $ configCmd = "" "c: \ Program Files \ VMware \ vРеализовать операции для агента Horizon \ Broker \ bin \ v4v_brokeragentcfg.exe" "" + "/ avcfg $ avconfig" write-host "invoking silent config command: cmd/c $ configCmd" Invoke-VMScript -VM $ vm -ScriptText "start cmd/c $ configCmd" -ScriptType Bat -GuestUser $ UID -GuestPassword $ PASSWD -Server $ viserver -Confirm: $ false Предполагают, что $ VM, $ UID, $ PASSWD, $ viserver указаны правильно –
Если я запускаю ту же самую команду вручную в окнах cmd, она отлично работает "c: \ Program Files \ VMware \ vРеализовать операции для агента Horizon \ Broker \ bin \ v4v_bro keragentcfg.exe "+"/avcfg ["192.168.1.21 | 443 | atulkatiyar'passw $ h"] «Я старался со всеми опциями и избежал всех специальных чартеров. Даже вытащить, это то же самое, что мы должны предоставить в командной строке cmd, но не выполняем. –
Неясно, что значит «перейти к Cmd линии».
С точки зрения PowerShell, в если вы хотите строку в ваш вопрос будет рассматриваться как буквального, просто заключите его в '...'
(одинарные кавычки, заключите внедренные одиночные кавычки, если таковые имеются, ''
):
> '["192.168.10.1|443|Atulkatiyar|passw$h"]'
["192.168.10.1|443|Atulkatiyar|passw$h"]
Если вы хотите передать этот литерал cmd.exe
, стандартный командный процессор, то же самое относится:
> cmd /c echo '["192.168.10.1|443|Atulkatiyar|passw$h"]'
["192.168.10.1|443|Atulkatiyar|passw$h"]
Тем не менее, ваша строка содержит $h
, которая выглядит как ссылка на переменную PowerShell - если вы хотите, чтобы эта ссылка была развернута (интерполирована) во-первых, необходим другой подход; в следующих командах, конкатенация с бинарным оператором +
используется:
> $h = 'Hi!'
> ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]')
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]')
["192.168.10.1|443|Atulkatiyar|passwHi!"]
В качестве альтернативы, и, как правило, вы можете использовать двойных -quoted строки вставлять ссылки на переменных ($<varName>
) и подвыражение ($(...)
), которые должны быть расширил (интерполированное: заменены на их значения) - в этом случае, используйте `
(Открывающая кавычка), чтобы избежать встроенных "
(и $
символов, если это необходимо):
> "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]"
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]"
["192.168.10.1|443|Atulkatiyar|passwHi!"]
Другие варианты:
-f
оператор для строки форматирования, где LHS содержит заполнители, такие как {0}
(первый операнд), которые экземпляр со значением на РИТ (на основе на каркас .NET-х String.Format
method - смотри также here):> ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h)
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h)
["192.168.10.1|443|Atulkatiyar|passwHi!"]
--%
«стоп-разборе» переключатель позволяет передавать остальные параметры вплоть до cmd.exe
как есть, кроме для cmd.exe
-Style среды переменных ссылок, таких как %PATH%
; обратите внимание, что это означает, что ссылки и подвыражения переменных PowerShell затем не расширен.
Строка в вашем вопросе не является исполняемой и сама по себе, так как именно (с какой командой) вы хотите ее выполнить? –