PowerShell和MS Access数据库

PowerShell和MS Access数据库,powershell,ms-access,scripting,Powershell,Ms Access,Scripting,我们希望使用PowerShell创建广告用户。使用CSV并不成问题,使用脚本很容易。下一级,我们希望使用PowerShell和MS Access数据库创建广告用户。现在我们有以下问题: 我们可以读取Access数据库,将其加载到一个对象中,但当我们启动脚本时,它会说它是一个对象而不是字符串 因此,当我们将对象转换为字符串时,它将加载字符串中的所有行,并创建一个具有所有名称的用户 PowerShell脚本是: $DatabaseName = "c:\temp\Nordwind.mdb" $Quer

我们希望使用PowerShell创建广告用户。使用CSV并不成问题,使用脚本很容易。下一级,我们希望使用PowerShell和MS Access数据库创建广告用户。现在我们有以下问题: 我们可以读取Access数据库,将其加载到一个对象中,但当我们启动脚本时,它会说它是一个对象而不是字符串

因此,当我们将对象转换为字符串时,它将加载字符串中的所有行,并创建一个具有所有名称的用户

PowerShell脚本是:

$DatabaseName = "c:\temp\Nordwind.mdb"
$Query = "SELECT * FROM Users "
$ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=$DatabaseName"
$Connection = New-Object System.Data.OleDb.OleDbConnection $ConnectionString
$Command  = New-Object System.Data.OleDb.OleDbCommand $Query, $Connection
$Connection.Open()
$Adapter = New-Object System.Data.OleDb.OleDbDataAdapter $Command
$Dataset = New-Object System.Data.DataSet
[void] $Adapter.Fill($DataSet)
$Connection.Close()
$x = Dataset.Tables
foreach ($u in $x) {
    New-ADUser -Name $u.name ...
}
这是PowerShell中的错误:

无法将“System Obejct[]”转换为参数“String”所需的类型“System.String”

我们可以用线来转换

$Name = [string]u.name
New-ADUser -Name $Name ...
当我们有10个用户要添加时,它会使用10个用户中的名称添加一个用户。
我们需要借助PowerShell从Access数据库中读取和转换一行数据的帮助。

数据集包含一个表列表,因此当您需要迭代表中的行时,您正在迭代数据集中的表(即使它只是一个表)

更改此项:

$x = Dataset.Tables
foreach ($u in $x) {
    New-ADUser -Name $u.name ...
}
为此:

$x = Dataset.Tables[0]
foreach ($u in $x) {
    New-ADUser -Name $u.name ...
}

问题应该会消失。

很容易找到这个:-D