Powershell和Mongo API
在过去的几天里,我编写了一个脚本,通过powershell使用mongo atlas api创建集合(使用此cmdlet)和数据库用户及角色。脚本工作正常,但我无法创建控件来检查集合是否已经存在(我可以在csv上检查环境以在正确的环境中创建对象)。因此,例如,如果我在同一环境中运行脚本在同一集合上创建两个角色,我会得到一个错误,即集合存在: 如何在所有环境中执行控件检查并跳过集合创建(如果存在)?这里涉及的代码是:Powershell和Mongo API,powershell,Powershell,在过去的几天里,我编写了一个脚本,通过powershell使用mongo atlas api创建集合(使用此cmdlet)和数据库用户及角色。脚本工作正常,但我无法创建控件来检查集合是否已经存在(我可以在csv上检查环境以在正确的环境中创建对象)。因此,例如,如果我在同一环境中运行脚本在同一集合上创建两个角色,我会得到一个错误,即集合存在: 如何在所有环境中执行控件检查并跳过集合创建(如果存在)?这里涉及的代码是: $filepath = "namecsv.csv" $listas
$filepath = "namecsv.csv"
$listas = Import-CSV $filepath -delimiter ";"
foreach ($lista in $listas) {
$db = $lista.db
$collection = $lista.collection
$rolename = $lista.roleName
#dev
if ($rolename -imatch '_DV_' ) {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di dev" -ForegroundColor Green
}
#test
if ($rolename -imatch '_TS_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di test" -ForegroundColor Green
}
#uat
if ($rolename -imatch '_UT_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di uat" -ForegroundColor Green
}
#prod
if ($rolename -imatch '_PR_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di prod" -ForegroundColor Green
}
}
以下是csv的结构:
db collection roleName
dbname collection1 GROUPNAME_DV_RW
dbname collection1 GROUPNAME_DV_RO
如果您能提供帮助,以下是我使用cmdlet get-mdbc collection获得的信息:
谢谢你的帮助。你差点就明白了。使用以下代码:
#获取所有集合
$dbcol=Get MdbcCollection-Database dbs
#获取/检查集合“test”(如果不存在则为$null)
$colTest=$dbcol |其中对象{$\.CollectionNamespace.CollectionName-ceq“test”}
请注意,
Get-MdbcCollection test
始终返回一个非空的集合对象,无论是否存在(但无论是否准备好操作)。您几乎已经明白了这一点。使用以下代码:
#获取所有集合
$dbcol=Get MdbcCollection-Database dbs
#获取/检查集合“test”(如果不存在则为$null)
$colTest=$dbcol |其中对象{$\.CollectionNamespace.CollectionName-ceq“test”}
请注意,
Get-MdbcCollection test
始终返回一个非空的集合对象,无论是否存在(但无论是否准备好操作)。感谢roman的帮助,但该代码不起作用(可能我不知道放在哪里),因此我修改了“if”,如下所示,现在脚本执行我想要的操作:
if ($rolename -imatch '_TS_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@connectionstring"
#### GET COLLECTIONS ###
$dbtest = Get-MdbcDatabase -name $db
$colltest = Get-MdbcCollection -Database $dbtest
if ($colltest.CollectionNamespace.CollectionName -ceq $collection) {
Write-Host "Collection $collection esistente su $db di TEST" -ForegroundColor Yellow
}
else {
Add-MdbcCollection -Name $collection -Database $dbtest
Write-Host "Collection $collection creata sul db $db di TEST" -ForegroundColor Green
}
}
还感谢您的cmdlet:)感谢roman提供的帮助,但该代码不起作用(可能我不知道该放在哪里),因此我修改了“if”,如下所示,现在脚本执行我想要的操作:
if ($rolename -imatch '_TS_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@connectionstring"
#### GET COLLECTIONS ###
$dbtest = Get-MdbcDatabase -name $db
$colltest = Get-MdbcCollection -Database $dbtest
if ($colltest.CollectionNamespace.CollectionName -ceq $collection) {
Write-Host "Collection $collection esistente su $db di TEST" -ForegroundColor Yellow
}
else {
Add-MdbcCollection -Name $collection -Database $dbtest
Write-Host "Collection $collection creata sul db $db di TEST" -ForegroundColor Green
}
}
还感谢您的cmdlet:)