2012-03-30 8 views
3

Ich habe einen Powshell-Befehl, der den Ordner (d. H. Summer) aus dem Verzeichnis wwwroot löscht und den Ordner mit den erforderlichen Dateien (Bilder, CSS, DLL usw.) neu erstellt. Das Problem besteht darin, dass der IIS gelegentlich dazu neigt, einige der Bilder oder Dateien im Verzeichnis zu sperren, sodass der Powershell-Befehl die Datei nicht löschen kann. Ich recycle/stoppe den Apppool, bevor ich das Powershell-Skript ausführe, das von der Site verwendet wird, aber das Problem bleibt bestehen. Dieses Problem ist zufällig, d. H. Das Powershell-Skript kann den Ordner irgendwann löschen, während es zu einem anderen Zeitpunkt nicht möglich ist. Das Seltsame ist, wenn ich anfange, die Inhalte (Unterordner, Dateien) in "Sommer" zu löschen, kann ich am Ende den Ordner "Sommer" löschen, aber es ist ein manueller Prozess, und das ist mühsam.Dateien können nicht gelöscht werden, IIS-Sperre

Gibt es einen Befehl, den ich in Powershell oder Batch-Datei setzen kann, um 'Sommer' Ordner zu löschen, obwohl wenn es von IIS gesperrt ist?

+1

Haben Sie versucht, eine vollständige "iisreset/stop"? –

+0

ich denke, dies wird den gesamten IIS statt nur einen Apppool stoppen, nicht sicher, ob ich das tun kann. – sanjeev40084

+0

jede endgültige Lösung mit dem vollständigen Quellcode-Beispiel, das daran arbeitet? – Kiquenet

Antwort

0

Wie in Kommentar, vollständig IIS mit iisreset Stop würde funktionieren stoppen.

Sie können auch nur die Anwendung beenden, von der Sie versuchen, Dateien zu löschen. Schau dir die Administration Guide an.

1

Ich stimme @Lynn Crumbling zu und empfehle iisreset.

Sysinternals hat zwei Tools, die andere Optionen bieten:

Das ProcExp Tool ermöglicht es Ihnen, welche Prozesse haben offene Handles auf eine bestimmte Datei zu finden, und ermöglicht es Ihnen, dass Griff zu schließen. Der Nachteil dieses Tools ist, dass es kein Befehlszeilenprogramm ist.

Mit dem Tool MoveFile können Sie planen, dass die Datei nach dem Neustart entfernt werden soll.

+0

irgendein anderes Werkzeug usiong Befehlszeile darüber (Handles einer Datei)? – Kiquenet

2

Sie die IIS-Powershell Commandlets verwenden können, um zu starten und App-Pools, Websites usw.

Import-Module WebAdministration; 
Stop-WebAppPool ${appPoolName} 
Stop-WebSite ${webSiteName} 

Sie sie dann wieder beginnen zu stoppen danach die entgegengesetzte Befehle

Start-WebAppPool ${appPoolName} 
Start-WebSite ${webSiteName} 
+0

Mit tinyget.exe für Stress-Web und Ausführen von Stop-WebAppPool, Status AppPool wird gestoppt, nicht gestoppt. Irgendeine Lösung darüber? – Kiquenet

+0

Ich versuche es mit 'Stop-WebAppPool', ich weiß, dass die Dateien immer noch mit' Stop-Website' gesperrt werden, danke! – sonjz