$sf = "\\\\domain\\dept\\dcgsi\\Extracts\\Tableau_Unlicensed_Users.csv"
if (Test-Path $sf){
Remove-Item $sf
}
$query = @"
\\copy (SELECT Name
FROM _users
WHERE licensing_role_name = 'Unlicensed')
TO $sf
WITH CSV DELIMITER ','
"@
$conn = New-Object -ComObject ADODB.Connection
# use existing 64 bit ODBC System DSN that we set up manually
$conn.Open('PostgreSQL30')
$conn.Execute($query)
$conn.Close()
我一直收到关于" \"的错误当我尝试这样做时,在$conn.Execute()
的行上。我认为它与角色转移有关,也许我做错了。
如果我只需要从_users获取任何记录的名称字段并将其输出为CSV,是否有更好的方法使用PowerShell?
最后,我将添加更多内容以循环CSV中的每条记录并执行tabcmd以删除所有未经许可的用户。
答案 0 :(得分:0)
$sf = "\\domain\dept\dcgsi\Extracts\Tableau_Unlicensed_Users.csv"
if (Test-Path $sf){
Remove-Item $sf
}
$query = @"
SELECT Name
FROM _users
WHERE licensing_role_name = 'Unlicensed'
"@
function Get-ODBC-Data{
$conn = New-Object System.Data.Odbc.OdbcConnection
$conn.ConnectionString = "DSN=PostgreSQL30;"
$conn.Open()
$cmd = New-object System.Data.Odbc.OdbcCommand($query, $conn)
$ds = New-Object system.Data.DataSet
(New-Object System.Data.Odbc.OdbcDataAdapter($cmd)).Fill($ds) | Out-Null
$conn.Close()
$ds.Tables[0] | Export-Csv $sf
}
Get-ODBC-Data
这确实占我所需要的99%;我现在必须处理csv并删除前两行。第一行是类型信息消息,第二行是列标题。