通过 Visio 中的 Powershell 脚本自动刷新 SQL 服务器导入的数据集

Automate SQL Server imported Data Set Refresh via Powershell script in Visio

我目前正在尝试编写可用于刷新 Visio 文件中的数据并将结果导出为 pdf 的 Powershell 脚本。我 运行 遇到的问题是 DataRecordset.Refresh 方法似乎会在允许脚本完成之前弹出凭据输入窗口。有什么解决办法吗?

$floorplans = Get-ChildItem -Filter "*.vsdx"
Write-Host "Converting Visio documents to PDF..." -ForegroundColor Cyan

try
{
$visio = New-Object -ComObject Visio.Application
$visio.Visible = $false

foreach ($floorplan in $floorplans)
{
    


    $pdfname = [IO.Path]::ChangeExtension($floorplan.FullName, '.pdf')
    Write-Host "Converting:" $floorplan.FullName "to" $pdfname
    $document = $visio.Documents.Add($floorplan.FullName)
    
    foreach($dataSet IN $document.DataRecordSets())
    {

        $dataSet.Refresh()
    }
    # Export all pages to PDF, see constants here http://msdn.microsoft.com/en-us/library/office/ff766893.aspx
    $document.ExportAsFixedFormat(1, $pdfname, 1, 0)
}

}

catch
{
Write-Error $_
}

finally
{
if ($visio) 
{
    $visio.Quit()
}

}

如果您的数据源需要身份验证(凭据),那么您需要指定这些或将它们保存在 Visio 文件中。在数据库连接页面上,通常有一个复选框允许将凭据保存在文件中(在 Visio 中),具体取决于您的数据库类型。

此外,您可以尝试通过更改连接字符串来指定密码,如下所示:

$cs= $dataSet.DataConnection.ConnectionString
$dataSet.DataConnection.ConnectionString = "$cs;password=<your password>"

$dataSet.Refresh()

这里有一篇相关的博文,可以看看: http://ton.snoei.net/2009/08/03/systeem-en-softwaremonitoring-met-visio-2007-4-van-4-de-software/

请注意,您可能需要不同的语法,具体取决于您使用的数据库。