Базовая команда, которая работает правильно:
Следующая команда выполняется в приглашении CMD и успешно выполняется.
"C:\Program Files\PowerShell\6.0.4\pwsh.exe" -NoLogo -NoProfile -NonInteractive -Command "&{D:\FooBar\myscript.ps1 -DependentAssembliesDirectoryPath 'D:\FooBar' -OutputPath 'D:\Baz Qux\output' -DocumentVersion 'whatever' -VisualStudioXmlDocumentationPaths 'D:\Baz Qux\input\my.xml' -AssemblyPaths 'D:\Baz Qux\input\my.exe','D:\Baz Qux\input\my1.dll','D:\Baz Qux\input\my2.dll','D:\Baz Qux\input\my3.dll' -MajorOpenApiSpecificationVersion 3 -MinorOpenApiSpecificationVersion 0 -Format YAML -DocumentDescriptionFilePath 'D:\Baz Qux\input\my.md'}; EXIT $LASTEXITCODE"
Однако, когда вводится пробелпо пути myscript.ps1
команда больше не работает.Это ожидается, так как мне нужно правильно указать путь.Хотя я не могу найти правильный способ цитирования.
Недопустимая попытка процитировать команду:
Я думал, что это сработало бы, основываясь на технике цитирования других путейв моей команде, но это не работает.
"C:\Program Files\PowerShell\6.0.4\pwsh.exe" -NoLogo -NoProfile -NonInteractive -Command "&{'D:\Foo Bar\myscript.ps1' -DependentAssembliesDirectoryPath 'D:\Foo Bar' -OutputPath 'D:\Baz Qux\output' -DocumentVersion 'whatever' -VisualStudioXmlDocumentationPaths 'D:\Baz Qux\input\my.xml' -AssemblyPaths 'D:\Baz Qux\input\my.exe','D:\Baz Qux\input\my1.dll','D:\Baz Qux\input\my2.dll','D:\Baz Qux\input\my3.dll' -MajorOpenApiSpecificationVersion 3 -MinorOpenApiSpecificationVersion 0 -Format YAML -DocumentDescriptionFilePath 'D:\Baz Qux\input\my.md'}; EXIT $LASTEXITCODE"
Эта команда приводит к куче ошибок, таких как,
At line:1 char:119
+ ... ionsDocumentGeneration.ps1' -DependentAssembliesDirectoryPath 'D:\Ope ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token '-DependentAssembliesDirectoryPath' in expression or statement.
At line:1 char:153
+ ... rectoryPath 'D:\Foo Bar' -OutputPath ...
+ ~~~~~~~~~~~~
Unexpected token ''D:\Foo Bar'' in expression or statement.
Опять же, так как это может быть немного трудно увидетьразница, которая отличается от работающей базовой команды и второй команды, заключается в том, что &{D:\FooBar\myscript.ps1
был изменен на &{'D:\Foo Bar\myscript.ps1'
, чтобы ввести пробел в пути и попытаться заключить в кавычки.
Обратите внимание
Я не могу вызвать команду в PowerShell, потому что она находится вне моего контроля.Он должен вызываться в командной строке cmd.exe.