由于Windows 10预先安装了winsqlite3.dll
,所以我想知道Microsoft是否还提供cmdlet,以便可以在PowerShell中使用sqlite3。
如果没有,在PowerShell中使用sqlite3的最标准方法是什么?
答案 0 :(得分:0)
您的意思是……
我可以使用PowerShell访问winsqlite3.dll
默认情况下,PowerShell作为对系统上所有.Net的访问以及您要在脚本中使用的任何DLL的访问,要求您使用Add-Type,[reflection.assembly], {{3 }}或.Net Import-Module命名空间。
您几乎可以对系统上的所有DLL进行此操作,无论它在哪里。但是我还没有尝试过您要问的洋娃娃。
# Example(s):
Import-module("C:\temp\MathFunctions.dll")
[MathFunctions.MultiClass]::Multiply(10, 2)
Import-Module "C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Controls.Dll"
Import-Module "C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"
另请参阅: DllImport
更新 winsqlite3将无法使用上述任何方法加载。我只是尝试了每个。
# Errors ---
# Using either C:\Windows\SysWOW64\winsqlite3.dll or C:\Windows\System32\winsqlite3.dll
Exception : System.BadImageFormatException: Could not load file or assembly 'file:///C:\Windows\SysWOW64\winsqlite3.dll' or one of its dependencies.
The module was expected to contain an assembly manifest.
Exception : System.IO.FileLoadException: Could not load file or assembly 'C:\\Windows\\SysWOW64\\winsqlite3.dll' or one of its dependencies. The
given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
Exception : System.Management.Automation.MethodInvocationException: Exception calling "LoadWithPartialName" with "1" argument(s): "The given assembly
name or codebase was invalid. (Exception from HRESULT: 0x80131047)" ---> System.IO.FileLoadException: The given assembly name or codebase
was invalid. (Exception from HRESULT: 0x80131047)
要点: 即使使用PowerShell P/Invoke Walkthrough,它也显示为不受支持
更新 基于以下内容,甚至考虑使用它可能也不是明智之举。
定义
命名空间:Microsoft.Data.Sqlite.Internal
程序集:Microsoft.Data.Sqlite.dll配置Microsoft.Data.Sqlite以使用winsqlite3.dll。这是一个 Windows中随附的SQLite版本
1。在与SQLite进行任何其他交互之前,必须先调用此方法。此API可能会在将来的版本中更改或删除。
另请参阅PowerShell GitHub案例: SqliteEngine Class