PowerShell中如何从数组按字符串片段检索数据库名并赋值给变量
PowerShell 数据库名匹配赋值解决方案
实现思路
针对你的匹配规则,使用通配符匹配运算符-like即可实现精准筛选,语法简单易懂,适合PowerShell新手使用。
完整可运行代码
# 示例数据库名数组 $databaseList = ("master","test-awe-nfr-lcl-data-sqldb","test-awe-nfr-lcl-data-sqldb_VIII","test-awe-nfr-lcl-data-sqldb_IX","test-awe-nfr-lcl-data-sqldb-RBAK") # 规则1:完全等于公共串,无任何后缀 $db1 = $databaseList | Where-Object { $_ -eq 'test-awe-nfr-lcl-data-sqldb' } # 规则2:公共串后以_VIII结尾 $db2 = $databaseList | Where-Object { $_ -like 'test-awe-nfr-lcl-data-sqldb_VIII' } # 适配公共串前有其他字符的场景可改为:$_ -like '*test-awe-nfr-lcl-data-sqldb_VIII' # 规则3:公共串后以_IX结尾 $db3 = $databaseList | Where-Object { $_ -like 'test-awe-nfr-lcl-data-sqldb_IX' } # 规则4:公共串后以-RBAK结尾 $db4 = $databaseList | Where-Object { $_ -like 'test-awe-nfr-lcl-data-sqldb-RBAK' }
结果验证
运行以下命令即可输出变量值,确认匹配是否正确:
Write-Host "db1: $db1" Write-Host "db2: $db2" Write-Host "db3: $db3" Write-Host "db4: $db4"
运行后输出结果如下:
db1: test-awe-nfr-lcl-data-sqldb db2: test-awe-nfr-lcl-data-sqldb_VIII db3: test-awe-nfr-lcl-data-sqldb_IX db4: test-awe-nfr-lcl-data-sqldb-RBAK
补充说明
如果后续匹配规则有变化,调整-like后的通配符规则即可适配不同场景:
- 匹配以指定内容开头:
'xxx*' - 匹配以指定内容结尾:
'*xxx' - 匹配包含指定内容:
'*xxx*'
内容的提问来源于stack exchange,提问作者user17071521
相关产品推荐
相关产品推荐

