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?

  • Compressione gzip HTTP non funzionante per css o javascript in tomcat 6
  • Come eliminare le windows di origine evento 2008
  • Cerchi di aggiungere il diritto "Accesso come servizio" ad un account tramite la row di command
  • C'è una versione degli strumenti AD che forniscono l'output PowerShell, simile agli strumenti di Exchange?
  • Come rilevare quando Antivirus è obsoleto con Powershell
  • Come posso avere SQL Server Management Studio 2008 connessa automaticamente alle mie istanze?
  • 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. "

  • Puoi get un elenco di utenti tramite ADFS?
  • Si è verificato un errore di sistema 1219
  • Installare .NET 3.5 SP1 in Windows 7 RC
  • Come aggiungere correttamente gli assembly di .NET a session di Powershell?
  • Performance Test e tuning TCP
  • get l'errore "SIOCADDRT: File esiste" quando si tenta di riavviare la networking su ubuntu
  • 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.