Ho uno script PowerShell che sto cercando di eseguire come attività pianificata. Il suo scopo è eseguire un'esportazione notturna da un database di Access, quindi caricare i file flat esportati in una destinazione SFTP. Lo script funziona correttamente quando lo eseguo manualmente, ma quando provo a eseguirlo come attività pianificata, non riesce. Ho ridotto il problema a un errore nella creazione di un oggetto COM.
Quello che sto vedendo
Ho fatto un po 'di registrazione su questo, e penso di sapere cosa sta succedendo; Non so proprio come ripararlo.
La linea offensiva nel mio script PowerShell è $Access = New-Object -ComObject Access.Application
. Quando eseguo manualmente lo script, il mio oggetto COM Access viene creato correttamente. $Access
è di tipo Microsoft.Office.Interop.Access.ApplicationClass
, come mi aspetterei.
Se lo eseguo come un'attività pianificata, in esecuzione con le mie autorizzazioni, l'oggetto COM non viene creato; $Access
viene restituito come $null
, il che provoca il fallimento di qualsiasi chiamata di metodo a quell'oggetto.
Io posso ottenere l'oggetto COM creato con successo controllando "Corri con i privilegi più elevati" nel Utilità di pianificazione, ma questo crea un altro problema. Il mio database di Access utilizza tabelle collegate su una condivisione di rete e, eseguendo come amministratore locale, perdo l'accesso a tali tabelle perché non sono più un utente di dominio.
La mia domanda
Qualcuno sa perché non riesco a creare un oggetto COM durante l'esecuzione come attività pianificata con le mie credenziali? C'è qualche soluzione per questo?
In caso contrario, qualche suggerimento per risolvere il mio problema con le autorizzazioni? Sembra di essere in un Catch-22 qui; l'unico modo per creare correttamente il mio oggetto COM è utilizzare le credenziali che causano il fallimento del resto del mio script.
if test-path = false
un'istruzione seguita da un net use \\myshare
comando per mapparlo.