我正在尝试创建一个Powershell脚本,该脚本将用于添加包含两个字段的单个表,并将值添加到Access DB中的其中一个字段。我希望能够将DB路径和值作为参数传递给脚本。
但是,我一直在使用DB路径出错。起初我得到了这个错误:
Exception calling "Open" with "1" argument(s): "Could not find file 'H:\$DB'."
At C:\users\user1\Desktop\Read_PCRes_DB.ps1:8 char:1
+ $conn.Open('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$DB;')
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : COMException
无论我如何参与辩论,都会发生这种情况;带引号,没有或带有没有空格的路径。
然后我断开了映射的H:\驱动器。现在我收到了这个错误:
Exception calling "Open" with "1" argument(s): "Cannot start your application. The workgroup information file is missing or opened exclusively by another user."
At C:\users\user1\Desktop\Read_PCRes_DB.ps1:8 char:1
+ $conn.Open('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$Database;' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : COMException
我觉得这是对数据库周围所需的事物或转义字符的简单重新排序,或者某处需要延迟。
如果我对路径和值进行硬编码,它的工作正常。以下是PowerShell脚本:
param ([string]$Database = "C:\pcres.mdb", [string]$BranchName = 'BLANK')
$adOpenStatic = 3
$adLockOptimistic = 3
$conn=New-Object -com "ADODB.Connection"
$rs = New-Object -com "ADODB.Recordset"
$conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='$Database';")
$conn.execute('Create Table Location (ID AUTOINCREMENT PRIMARY KEY, Branch TEXT)')
$rs.Open("SELECT * FROM Location",$conn,$adOpenStatic,$adLockOptimistic)
$rs.AddNew()
$rs.Fields.Item("Branch").value = $BranchName
$rs.Update()
$conn.Close
$rs.Close
这是稍微修改过的版本:Create Blank Access Database Using Powershell
我主要是这样运行它:
.\Read_PCRes_DB.ps1 -Database C:\Users\user1\desktop\pcres.mdb -BranchName "Main"
我正在使用Powershell 5.0进行测试,但它将与Powershell 2.0一起用于生产。这让我发疯,不应该这样。
答案 0 :(得分:0)
没关系......我重新启动了它的确有效。多么荒谬......从IT Crowd播放自动录音