Estou executando isso no PowerShell, então não tenho certeza se isso aconteceria em um ambiente diferente (o próprio regex inclui apenas tudo, exceto aqueles que começam com 'amq.').
Quando executo o seguinte comando, o '^' é eliminado do padrão:
rabbitmqctl set_policy mirroring '^(?!(?:amq\.)).+$' '{"""ha-mode""":"""all"""}'
Ele produz o seguinte:
Setting policy "mirroring" for pattern "(?!(?:amq\\.)).+$" to "{\"ha-mode\":\"all\"}" with priority "0" ...
Eu tentei escapar de diferentes maneiras, sem sucesso. Curiosamente, configurá-lo no plugin de gerenciamento da web funciona bem.
ATUALIZAR
O problema parece estar relacionado ao fato ^
de ser um caractere reservado em arquivos em lote (eu acho), e não estar entre aspas no que diz respeito ao arquivo em lote (ou seja, PS precisa passar uma string entre aspas para o padrão, mas estava passando no regex como está). Qualquer um dos seguintes trabalhos, com base embeatcrackerresposta:
rabbitmqctl set_policy mirroring '"^(?!(?:amq\.)).+$"' '{\"ha-mode\":\"all\"}'
rabbitmqctl --% set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}
rabbitmqctl @('set_policy','mirroring','"^(?!(?:amq\.)).+$"','{\"ha-mode\":\"all\"}')
Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring "^(?!(?:amq\.)).+$" {\"ha-mode\":\"all\"}'
Responder1
PS 2.0 e superior:
Se você especificar uma matriz de valores, ela os expandirá automaticamente em parâmetros separados.
& rabbitmqctl @('set_policy mirroring', '^(?!(?:amq\.)).+$', '{ha-mode:all}')
Usando
Start-Process
cmdlet.
Start-Process -FilePath 'rabbitmqctl' -ArgumentList 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
# Same as above, shortened using aliases and positional parameters
start rabbitmqctl 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
saps rabbitmqctl 'set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}'
PS 3.0 e superior:
... você pode usar o
--%
operador que informa ao PowerShell para interromper a análise desse ponto em diante até o final da linha. Tudo a partir desse operador é analisado pelo analisador usado pelo programa.
rabbitmqctl --% set_policy mirroring ^(?!(?:amq\.)).+$ {ha-mode:all}
Referência: