2017-01-09 6 views
0

У меня есть начало базового скрипта. В идеале, он будет запускать запрос в Access, затем принимать результаты запроса и вводить CSV, но, похоже, он ничего не записывает в мои CSV (хотя измененная дата/время изменяется).

Что мне не хватает?

$Acc = New-Object –Com Access.Application 

$Acc.OpenCurrentDataBase("H:\TEST.mdb") 

#Runs the query 
$Acc.DoCmd.OpenQuery("Query1") 

#Dealing with results 
$Results = $Acc.DoCmd.OpenQuery("Query1") 

$Results | Select-Object $Results | Export-Csv -Path H:\test.csv -Delimiter ";" 

Я также попытался заканчивая вместо этого:

$Results | Out-File -Append H:\test2.csv -Encoding UTF8 
+1

Действительно ли '$ Результаты 'пуст? – alroc

+0

Нет, если я запускаю запрос вручную, он производит как минимум несколько результатов. –

+0

@glass_kites Является ли '$ results' строковым массивом или чем-то, что может быть представлено как единое целое? '$ Results.GetType(). Fullname'. '$ Результаты | Select-Object $ Результаты кажется мне странным. Если $ results является объектом, тогда вы можете просто удалить выделение в целом? – Matt

ответ

3

OpenQuery() метод только открывает запрос в Access. Он не возвращает результаты запроса. Вы можете использовать метод TransferText() для сохранения набора результатов определения запроса в CSV:

$acc.DoCmd.Transfertext(2, [Type]::Missing, 'Query1', 'H:\test.csv', $true) 
+0

Блестящий, спасибо большое. Работает отлично! –