database - 从powershell列出Access DB中的所有表名
问题描述
我使用连接到访问数据库。
$Conn = New-Object -ComObject ADODB.Connection
$Conn.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$FullPath`";Persist Security Info=False;")
这很好用。我可以从各种表中读取和更新没有问题。但我想做的是列出数据库中的所有表。
我找到了这个
$Conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::tables,$null) | ForEach-Object {
$_?
write-host $_.TABLE_NAME $_.TABLE_TYPE
$Zones = $_.table_name
}
但我收到错误消息。
在看了很多网站之后,我真的没有找到任何东西。
列出表格后,我将继续列出每个表格中的字段。
我收到以下错误消息。
[DBG]: PS C:\WINDOWS\system32\WindowsPowerShell\v1.0>> $Conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::tables,$null) Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres. Au caractère Ligne:1 : 5 + $Conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::ta ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
翻译
超出授权范围。或相互冲突。
提前致谢。
解决方案
...当您在数组中传递值时,为不包含值的数组元素包含空字符串或空值。如果将空数组传递给限制,则所有行(每个表一个)都按默认顺序返回。...
调用时您的代码失败$Conn.GetOleDbSchemaTable
,因为您使用了正确的tables
GUID,您的第二个参数可能是错误的。尝试使用空数组是否可以解决问题:
$emptyArray = @()
$Conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::tables, $emptyArray) | ForEach-Object {
write-host $_.TABLE_NAME $_.TABLE_TYPE
$Zones = $_.table_name
}
如上述评论中所述,还删除了该$_?
语句,该语句不是有效的 PowerShell 代码。
希望能解决您的问题。
推荐阅读
- javascript - 如何在 JavaScript node.js 中编写二进制 mlm 注册系统
- regex - 缩短 Python 正则表达式模式
- reactjs - 承诺中的 setState 未更新
- python - sqlalchemy 禁用缓存(在每次调用中调用数据库)
- sql - Oracle SQL Pivot 多列
- javascript - 如何将变量传递给 Promise.All 函数?
- vb.net - 具有两个参数的控制器中的操作 - 如何设置路由和控制器?
- javascript - Vue.js - httpVueLoader 不加载模块?
- python-3.x - 如何编写一个 api 以基于电子邮件以 json 格式显示员工数据
- python - 附加列表相对于另一个列表时,条件语句不起作用