注意:我知道Wdac 模块,但它目前不适用于 PowerShell 7。解决这个问题导致了这个问题。
MSFT_OdbcDsnTask 类的Add 方法有一个必需的参数“DriverName”,其描述如下:
司机姓名 [in]
新 ODBC DSN 的 ODBC 驱动程序的名称。您不能使用通配符。
我计算机上的大多数 ODBC 驱动程序的名称都包含*
我认为在这种情况下被解释为通配符的名称。以下是一些示例:
- Microsoft Excel 驱动程序 (*.xls)
- Microsoft Access 驱动程序 (*.mdb)
- Microsoft Access 文本驱动程序(*.txt、*.csv)
通过调用 PowerShell 命令调用 Add 方法以创建 DSN
Invoke-CimMethod -ClassName MSFT_OdbcDsnTask `
-Namespace ROOT\Microsoft\Windows\Wdac `
-MethodName 'Add' `
-Arguments @{
Name = 'test'
DsnType = 'User'
Platform = '32-bit'
DriverName = 'Microsoft Excel Driver (*.xls)'
# DriverName = 'SQL Server' }
导致错误The requested object could not be found.
。更改注释行,以便DriverName = 'SQL Server'
成功创建 DSN,而不是包含通配符的 excel 驱动程序。
- 如何使用 CIM/WMI 为名称包含通配符的驱动程序创建 DSN?
*
有没有办法以允许该Add
方法找到该驱动程序的方式引用其名称包含的驱动程序?
更新1:
根据此评论产生的错误让我想知道这是否真的归结为通配符。我运行这个脚本来测试我电脑上提到的所有驱动程序。结果如下。请注意,驱动程序Microsoft ODBC for Oracle
因错误而失败The driver {ODBC for Oracle} is not installed.
。
Result Name
------ ----
Failure Driver do Microsoft Access (*.mdb)
Failure Microsoft Paradox Driver (*.db )
Failure Microsoft Access Driver (*.mdb)
Failure Microsoft Text-Treiber (*.txt; *.csv)
Failure Microsoft Excel-Treiber (*.xls)
Failure Microsoft Access Text Driver (*.txt, *.csv)
Failure Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)
Failure Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
Failure Microsoft dBase Driver (*.dbf)
Failure Microsoft Access Driver (*.mdb, *.accdb)
Failure Microsoft ODBC for Oracle
Failure Microsoft Text Driver (*.txt; *.csv)
Failure Driver da Microsoft para arquivos texto (*.txt; *.csv)
Failure Driver do Microsoft Excel(*.xls)
Failure Microsoft Access-Treiber (*.mdb)
Failure Driver do Microsoft Paradox (*.db )
Failure Microsoft Excel Driver (*.xls)
Failure Driver do Microsoft dBase (*.dbf)
Failure Microsoft Paradox-Treiber (*.db )
Failure Microsoft dBase-Treiber (*.dbf)
Success SQL Server Native Client 11.0
Success SQL Server
Success SQL Server
Success SQL Server Native Client 11.0