Как предотвратить попытки Excel подключиться к своим ссылкам при открытии файла со ссылками в Powershell? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть сценарий PS, который запускается из планировщика заданий.Когда файл .xlsm добавляется в наблюдаемую папку, он открывает этот файл и собирает из него определенные данные, а затем выводит его в CSV.Проблема, с которой я столкнулся в последнее время, связана с файлами XLSM, имеющими ссылки на внешний сайт SharePoint.Каждый раз, когда эти файлы открываются скриптом, он просто зависает.Если я пытаюсь открыть файл вручную, 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 голосов
/ 02 мая 2019

Я не могу проверить это в данный момент, но вам нужно выполнить настройки для объекта 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...