【发布时间】:2010-12-17 10:48:32
【问题描述】:
假设在本地 IIS 服务器上部署了一个 webapp。当我需要删除/取消部署它时,我可以转到 IIS 管理器,右键单击该应用程序,然后选择“删除应用程序和内容” - 等等。但是,我需要从命令行执行相同的操作 - 如何?可以假设应用程序的名称是已知的。
也许这可以通过 MSDeploy 以某种方式完成?
【问题讨论】:
标签: iis web-applications command-line
假设在本地 IIS 服务器上部署了一个 webapp。当我需要删除/取消部署它时,我可以转到 IIS 管理器,右键单击该应用程序,然后选择“删除应用程序和内容” - 等等。但是,我需要从命令行执行相同的操作 - 如何?可以假设应用程序的名称是已知的。
也许这可以通过 MSDeploy 以某种方式完成?
【问题讨论】:
标签: iis web-applications command-line
如果您只想在 IIS 中从网站中删除应用程序而不实际删除文件(如 msdeploy 所做的那样),或者如果您没有安装 WebDeploy-extension,您可以使用以下命令:
C:\Windows\System32\inetsrv\appcmd.exe delete app "Default Web Site/MyAppName"
【讨论】:
appcmd。
它是这样做的:
"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy" -verb:delete -dest:apphostconfig="Default Web Site/<webapp_name>"
【讨论】:
"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy" -verb:delete -dest:apphostconfig="Default Web Site/<webapp_name>"
我知道问题是“命令行”,但您可以使用 PowerShell 和 IIS Administration Cmdlets 来执行此任务。我提供了所有功能并解释了如何自动化这个on my blog 的过程。此外,您可以轻松地将 IIS 管理 Cmdlet 调用替换为对 msdeploy、appcmd、IIsVdir.vbs 等的调用。
对于您的具体问题,这个 PowerShell 代码应该可以解决问题:
$block = {
Import-Module WebAdministration
$website = "YourWebsiteName"
$applicationName = "PathUnderWebsite\ToYourApplication"
$fullPath = Join-Path $website $applicationName
Write-Host "Checking if we need to remove '$fullPath'..."
if (Get-WebApplication -Site "$website" -Name "$applicationName")
{
Write-Host "Removing '$fullPath'..."
Remove-WebApplication -Site "$website" -Name "$applicationName"
}
Write-Host "Deleting the directory '$fullPath'..."
Remove-Item -Path "IIS:\Sites\$fullPath" -Recurse -Force
}
$session = New-PSSession -ComputerName "Your.WebServer.HostName"
Invoke-Command -Session $session -ScriptBlock $block
Remove-PSSession -Session $session
【讨论】:
PSSession 的东西。 +1,不过。
iisweb /delete 网站 [/s 计算机 [/u [域]用户 /p 密码]]
【讨论】: