Проблемы при вызове PowerShell с инструкциями в качестве параметров - PullRequest
0 голосов
/ 11 мая 2018

Я пишу программу, которая включает запуск PowerShell и передачу инструкций в качестве первого аргумента. Я передаю несколько инструкций и связываю их вместе с ;. После отладки и тестирования вещей, я думаю, я нашел суть моей проблемы, и я честно не могу сказать, является ли это сбой PowerShell или я просто очень глуп. «Глюк» по сути сводится к следующему:

Если вы откроете PowerShell и запустите:

$string = "test"; Add-Content "A:\file.txt" $string 

Вы получаете файл file.txt, который содержит «test», как и ожидалось. Теперь, если вы вместо этого вызовете PowerShell, скажем, из терминала, и передадите эту инструкцию в качестве параметра, вы получите файл file.txt, но без содержимого внутри, несмотря на идентичность команды. Я предполагаю, что переменная $string отбрасывается после ;, когда инструкция передается в качестве аргумента, но что я знаю. Может ли быть обходной путь, или я упускаю что-то очевидное?

1 Ответ

0 голосов
/ 11 мая 2018
powershell $x="test"; add-content c:\path\test.txt $x

трактуется как

powershell 
    $x="test";        # run this script code

        add-content   # with this as parameter 1
        c:\sc\q.txt   # with this as parameter 2
        $x            # with this as parameter 3

Вы хотите процитировать его, чтобы весь сценарий представлял собой единый аргумент powershell.exe, что-то вроде этого:

powershell "$x='test'; add-content c:\path\test.txt $x"
...