我正在尝试创建一个Powershell脚本,该脚本将在远程计算机上创建一个会话并运行一系列命令。这些有问题的命令是在部署代码之前删除Mongodb数据库。
我有会话方面的工作,但是当我尝试运行cmd时,我得到X is not recognized as the name of a cmdlet
。
我登录到远程计算机并使用cmd时执行的过程是:
'C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe'
use <database>
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
运行此命令时,出现以下错误:
“使用评估”一词未被识别为cmdlet的名称,
术语'db.dropDatabase()'不被识别为cmdlet的名称,
答案 0 :(得分:1)
我通过浏览& '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()'
}