Выполнение нескольких команд cmd из сценария powershell, как если бы я выполнял его в оболочке cmd - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь создать сценарий powershell, который создаст сеанс на удаленном компьютере и выполнит серию команд. Эти команды предназначены для удаления базы данных Mongodb перед развертыванием кода.

У меня работает сессия, но когда я пытаюсь запустить cmd, я получаю X is not recognized as the name of a cmdlet.

Процесс, который я выполняю при входе в систему на удаленном компьютере и использовании cmd:

  1. 'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe'
  2. use <database>
  3. db.dropDatabase()

Это работает правильно, и я пытаюсь запустить их в powershell. Они должны выполняться построчно, чтобы работать.

ps1:

$session = New-PSSession -ComputerName "remoteMachine" -Credential $cred

Enter-PSSession -Session $session

Invoke-Command -ComputerName "remoteMachine" -ScriptBlock {
    & 'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe' 
    & 'use <database>'
    & 'db.dropDatabase()'
}

Exit-PSSession
Get-PSSession | Remove-PSSession

При запуске я получаю следующие ошибки:

Термин «Оценка использования» не распознается как имя командлета,

Термин «db.dropDatabase ()» не распознается как имя командлета,

1 Ответ

1 голос
/ 13 марта 2019

Мне удалось разобраться, просмотрев & 'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe' --help.

Вместо использования нескольких строк я помещаю команду в одну строку, например:

Invoke-Command -ComputerName "remoteMachine" -ScriptBlock {
    & 'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe' <database> --eval '<action>'
}

Например:

Invoke-Command -ComputerName "remoteMachine" -ScriptBlock {
    & 'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe' testDatabase --eval 'db.dropDatabase()'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...