Perché il metodo Folder.CopyHere NET non consente la soppressione della window di dialogo per i file .ZIP quando viene eseguito in un process di SQL Server Agent PowerShell?

Sto usando PowerShell in un process di agente di SQL Server per automatizzare l'estrazione del contenuto del file .ZIP in una directory.

Sulla base della risposta più votata su questa domanda: come eseguire la chiusura / decomprimere i file in Powershell?

  • Aggiunta di un record DNS a un server Win 2008R2 da un server Win 2008R2 o Win7 tramite Powershell
  • Office 365 Powershell - Esport l'utente, il tipo di licenza e il field dell'azienda in file csv
  • Automazione delle attività di amministrazione in Windows
  • L'account di MS SQL Server 2008 è bloccato e il login di authentication di Windows è distriggersto
  • Caratteristiche nascoste di PowerShell
  • Tracking degli errori di timeout di SQL Server 2008
  • Sto usando questo codice:

    $dir_source = "\\myserver\myshare\" $dir_destination = "\\myserver2\myshare2\" $file_source = Get-ChildItem -Path (Join-Path -Path $dir_source -ChildPath "test.zip") $shell_app = New-Object -com shell.application $zip_file = $shell_app.namespace($file_source.FullName) $destination = $shell_app.namespace($dir_destination) $destination.Copyhere($zip_file.items(),20) 

    Il parametro facoltativo vOptions del metodo CopyHere è 20, che specifica "Non visualizzare una window di dialogo di avanzamento". (4) e "Rispondi con" Sì a tutti "per qualsiasi window di dialogo visualizzata." (16).

    Questo parametro funziona come previsto in un editor di script PowerShell (sto utilizzando PowerGUI Script Editor). Posso eseguire lo script e eseguirlo di nuovo (scenario di sovrascrittura), e lo script completato senza errori e senza windows di dialogo. Tuttavia, l'esecuzione dello stesso codice in un process di SQL Server Agent PowerShell provoca un process che si blocca quando il file esiste già nel database di destinazione.

    Passi da riprodurre:

     - Instantiate code in a SQL Server 2008 SQL Server Agent Job step - Start the SQL job - Result: SQL job completes, unzipped file "test.csv" appears in the $dir_destination folder - Start the SQL job - Result: Job executes indefinitely. - Stop the SQL job - Delete the "test.csv" from the $dir_destination folder - Start the SQL job - Result: SQL job completes, unzipped file "test.csv" appears in the $dir_destination folder 

    Perché il parametro vOption non funziona per il process SQL?

    Walter Wang, di Microsoft Online Community Support afferma :

    … nota che each cartella shell è supportta da un'estensione dei nomi di shell (NSE per brevi). Ogni NSE sceglierà di avere un proprio meccanismo per copiare / spostare / cancellare i dati (file / cartella per un normale path del file system).

    La documentazione su cui si fa riferimento sul metodo CopyHere si applica solo al path del file system normale. È per questo che si utilizza l'opzione 4 per distriggersre la window di dialogo di avanzamento non funziona per una cartella zip.

    D'altra parte, l'ultima volta che ho controllato con la squadra di shell, attualmente il file zip NSE funzionalità è solo destinato ad essere utilizzato con l'interazione con gli utenti.

    In altre parole, l'accesso al file zip NSE non è ufficialmente supportto. "

  • Imansible installare Active Directory Management Gateway Service in Windows Server 2003 DC perché manca la correzione rapida 969166
  • Che cosa causa questo errore di connettività Sporadic di servizio Web IIS 7?
  • Come bilanciare il carico di SQL Server 2008 per le applicazioni ASP.NET ad alto utilizzo?
  • Quale valore di thread_cache_size devo utilizzare?
  • Come configurare un file Web.Config per consentire la gestione personalizzata 404 durante la visualizzazione di dettagli di errore in pagina 500?
  • Installatore di .NET 3.5 SP1 si blocca intorno all'80%
  • 2 Solutions collect form web for “Perché il metodo Folder.CopyHere NET non consente la soppressione della window di dialogo per i file .ZIP quando viene eseguito in un process di SQL Server Agent PowerShell?”

    Mi chiedo se questo abbia qualcosa a che fare con gli interni dei passi di lavoro di Powershell in SQL Agent. Ad esempio, non è ansible eseguire l'host di scrittura nel passo del process powershell in SQL Agent come spiegato in questo post di blog: http://blogs.msdn.com/b/mwories/archive/2009/09/30/the-use-of- write-host-e-sql-server-agent-PowerShell-job-steps.aspx

    Un suggerimento– provare ad impostare un passaggio di lavoro CmdExec e call C: \ windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe con il parametro -file invece di utilizzare i passaggi del process powershell. In questo modo verrà utilizzato cmdexec invece di sqlps.

    Devi passare nella bandiera

     (16) Respond with "Yes to All" for any dialog box that is displayed. 

    Così:

     $destination.Copyhere($zip_file.items(), 16) 

    Potresti volerlo combinare con questa bandiera:

     (4) Do not display a progress dialog box. 

    Così si farebbe:

     $destination.Copyhere($zip_file.items(), 20) 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.