在Powershell中打开带有链接的文件时,如何防止Excel尝试连接到其链接?

时间:2019-05-02 17:59:22

标签: excel powershell com

我有一个从任务计划程序运行的PS脚本。将.xlsm文件添加到监视的文件夹时,它将打开该文件并从中收集特定数据,然后将其输出到CSV。我最近遇到的问题是带有链接到外部SharePoint网站的XLSM文件。每当使用脚本打开这些文件时,它就会挂起。如果我尝试手动打开文件,则Excel首先会要求我“启用内容”,然后单击以启用提示输入凭据以连接到与链接关联的SharePoint网站的提示。

我可以在断开链接然后运行脚本后确认问题已解决,因此肯定是此链接使脚本挂起了。在打开文件之前,我尝试过研究打破链接的方法,但是收不到很多。我能找到的所有资源都是通过Powershell更新链接的参考,而不破坏它们。

以下是与打开文件有关的代码片段:

$watchedfolder = "C:\Watched"
$filedirectory = Get-ChildItem $watchedfolder | Where-Object {($_.Extension -eq ".xlsm")} | Select-Object -ExpandProperty Name 

foreach ($file in $filedirectory){
    $sheetName = "Daily Dash"

    #OPEN EXCEL WORKBOOK
    $objExcel = New-Object -ComObject Excel.Application
    $workbook = $objExcel.Workbooks.Open("C:\Watched\$file")
    $sheet = $workbook.Worksheets.Item($sheetName)
    $objExcel.Visible = $false
    $objExcel.DisplayAlerts = $false
    $rowMax = ($sheet.UsedRange.Rows).count

我不确定我可以在脚本的此开头部分添加什么内容,以防止尝试连接到SharePoint网站。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我目前无法对此进行测试,但是您需要在打开文件之前对Excel对象进行设置。

AskToUpdateLinks属性设置为$ false可以满足您的要求。

#OPEN EXCEL WORKBOOK
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false
$objExcel.DisplayAlerts = $false
$objExcel.AskToUpdateLinks = $false
$workbook = $objExcel.Workbooks.Open("C:\Watched\$file")
$sheet = $workbook.Worksheets.Item($sheetName)
$rowMax = ($sheet.UsedRange.Rows).count