Использование переменной ruby в скрипте PowerShell с winrm - PullRequest
0 голосов
/ 03 февраля 2020

РЕДАКТИРОВАТЬ: Я хотел бы подсчитать файлы / папки контейнеров хранения через командлет PowerShell менеджера виртуальных машин.

Я задавал похожие вопросы, но все еще борюсь с синтаксисом. У меня есть сценарий ruby, который выполняет сценарий PowerShell на удаленном сервере. Я хочу использовать переменную ruby в скрипте Powershel. Например,

path_str = "\\XXX\YYY\" #This is the ruby var

PSoutput = shell.run(" #This part is executing the PS script
            $Files = Get-ChildItem -Recurse -File -Path #{path_str}  | Measure-Object | %{$_.Count}" | stdout

Как использовать переменную ruby path_str со сценарием PS? Я пытался

# {path_str}

\ "" + path_str + "\"

Двойные кавычки и одинарные кавычки

У меня ничего не получалось.

1 Ответ

0 голосов
/ 03 февраля 2020

Я вижу несколько вещей, вызывающих проблемы.

  1. # - зарезервированный символ в powershell. Когда вы используете #, все, что после этого является комментарием.
  2. Вы назначаете вывод Get-ChildItem для $files. Не будет выходных данных из shell.run () для назначения PSoutput, потому что выходные данные из командлета присваиваются $files.
  3. Get-ChildItem - это команда powershell speci c, а не командная строка / Команда dos, которую вы можете выполнить изнутри оболочки, без предварительного вызова исполняемого файла powershell. (в этом я немного сомневаюсь, но уверен, что это правильно).

То, что вы можете сделать из ruby, должно работать

PSoutput = system("powershell get-childitem -Recurse -File -Path " + #{path_str} + "  | Measure-Object | % {$_.Count}")

После выполнения команды выполняется, у вас должно быть общее количество файлов в каталоге #path_str.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...