我需要通过命令行远程管理 IIS。有没有办法让我的本地AppCmd.exe引用远程服务器?这样我传递给的每个命令AppCmd.exe都会在另一台机器上执行?
我们在 IIS 7.5 上遇到了一个问题,我们有一个简单的部署系统,它包含以下内容:
创建一个新的 webroot 的 zip 文件,包含三个文件夹:
Api
Site
Manager
Run Code Online (Sandbox Code Playgroud)
它被解压到一个新文件夹中(假设我们称之为“SITE_REV1”),并包含一个调用以下内容的脚本(每个 webroot 一个):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
这通常工作,在 9/10 倍。在某些情况下,webroot 似乎已正确更新(如果我检查 IIS 管理器中的基本设置,路径看起来是正确的),但有问题的运行站点实际上指向旧位置。我们设法“修复它”的唯一方法是运行 IIS 重置。仅回收有问题的应用程序池是不够的。
有时似乎甚至有必要重新启动,但我不能 100% 确定这是准确的(并非总是我自己在解决问题)。
我使用 Powershell 和 Web-Administration 模块重写了脚本,希望 appcmd 中存在故障,但发生了同样的问题。
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
有没有人经历过这样的事情?有没有人知道发生了什么,我可以尝试做些什么来防止这个问题?执行 IIS 重置对我们来说并不是一个好的选择,因为每次我们尝试在单个站点上部署更改时,这都会影响服务器上的所有站点。
编辑:我们已经确定在 IIS 管理器中启动/停止站点(而不是应用程序池)可以解决错误的物理路径,但是如果我使用 appcmd 停止站点,更改物理路径,然后启动它,我仍然遭受同样的问题。我在一片空白...
我的 IIS7 有这个问题:
C:\Users\vtortola.dk>%windir%\system32\inetsrv\appcmd.exe list site
ERROR ( message:Configuration error
Filename: redirection.config
Line Number: 0
Description: Cannot read configuration file due to insufficient permissions
. )
Run Code Online (Sandbox Code Playgroud)
每次我尝试将 ASP.NET 应用程序发布到我的计算机时,我都无法使用它,因为 IIS 无法读取配置文件,我不知道如何解决这个问题。
我在 找到了该文件C:\Windows\System32\inetsrv\config,其权限适用于:
这样对吗?可能有什么问题?
我有一个脚本,一直在另一台 Windows 2008 上使用,用于删除 IIS7 配置备份并创建一个新备份:
SET DEST=C:\Backup\Web\IIS7
SET BACKUPNAME=IIS7-CONFIGS
%windir%\system32\inetsrv\appcmd.exe delete backup "%BACKUPNAME%"
%windir%\system32\inetsrv\appcmd.exe add backup "%BACKUPNAME%"
robocopy %windir%\system32\inetsrv\backup "%DEST%" /MIR /R:6 /W:10 /ZB
Run Code Online (Sandbox Code Playgroud)
但在新的 Windows 2008 服务器上,我在删除时遇到访问被拒绝的情况:
ERROR ( hresult:80070005, message:Command execution failed.
Access is denied.
)
Run Code Online (Sandbox Code Playgroud)
我关闭了 UAC,并几乎复制了旧服务器中的所有设置(包括作为管理员的用户角色)。我缺少什么?
如果我在我的服务器上运行以下命令:
%windir%\system32\inetsrv\AppCmd.exe list site
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
SITE "MyCompany.MyProject.WebRole_IN_0_Web" (id:1273337555,bindings:https/555.555.555.555:443:,state:Started)
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到网站名称:
MyCompany.MyProject.WebRole_IN_0_Web
Run Code Online (Sandbox Code Playgroud)
某种讨厌的字符串解析是我唯一的选择吗?服务器是一个 Windows Azure 实例。
我想运行一个命令来在 IIS 上的 Web 应用程序下的文件夹上设置匿名身份验证。我希望特定文件夹是唯一受影响的东西。我不想更改整个 Web 应用程序的匿名身份验证。
2013 年 7 月 29 日编辑:
仍然没有足够的答案:( 添加一些关键事实:
- 我需要在脚本中将此作为安装过程的一部分
。- 我不想依赖 IIS powershell 管理单元。-
我知道可以通过 Web 配置进行设置,我对此没有问题,但我无法更改 Web 应用程序之外的任何配置。我无法更改 C:\Windows\System32\inetsrv\config\applicationHost。 config,所以,这个选项就出来了。
这可以通过 IIS 管理器 (GUI) 轻松完成。
我正在管理一组 IIS 8.5 服务器,并且正在努力遵守安全基线。
我的问题是这样的:如果我在其中一台 IIS 服务器上运行特定appcmd查询,我会得到以下结果:
C:\>appcmd list config -section:system.web/authentication
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<credentials>
</credentials>
</forms>
<passport />
</authentication>
</system.web>
C:\>
Run Code Online (Sandbox Code Playgroud)
我需要做的是找到appcmd从这里读取的实际配置文件,这样我就可以手动更新相关部分(使用appcmd自身更新会导致各种问题)。我找不到它。到目前为止我已经检查了以下文件:
我想不出还有什么地方可以看。大多数这些文件甚至没有一个<system.web>部分,并且它们中的任何地方都没有“凭据”一词。
从哪里appcmd读取以生成上面的输出?
我仍在研究这个问题,刚刚在这里找到了以下内容,这可能就是答案:
默认配置
以下默认凭据元素未在 Machine.config 或根 Web.config 文件中显式配置。但是,它是应用程序返回的默认配置。
<credentials passwordFormat="SHA1" />
我们使用以下命令来获取添加的站点列表:
%systemroot%\system32\inetsrv\AppCmd.exe list sites
Run Code Online (Sandbox Code Playgroud)
但上述命令无法获取与该站点相关的应用程序池列表。
我想要一个应用程序池列表。如果一个命令可以查看站点列表和相关应用程序池,那就太好了。
在 IIS7 中,是否可以将 appcmd list sites 命令的结果过滤为例如在端口 443 上运行的所有站点?
例如:
/appcmd list sites /bindings:http://216.123.123.123:443:*wildcard
Run Code Online (Sandbox Code Playgroud)
事实上,我只能过滤确切的绑定,例如:
/appcmd list sites /bindings:http://216.123.123.123:443:some.hostheader.com
Run Code Online (Sandbox Code Playgroud) 我的理解是,要求 IIS 中的 AppPool 进行回收将使当前活动的请求在被回收请求异常终止之前 90 秒内完成,同时不再接受新请求。要求 AppPool 停止怎么样?它是否也有相同的降速政策?
如果重要,我将通过以下方式停止 AppPool:
appcmd.exe stop apppool /apppool.name:"theAppPoolName"
Run Code Online (Sandbox Code Playgroud)
appcmd ×10
iis ×6
iis-7 ×5
iis-7.5 ×3
azure ×1
backup ×1
deployment ×1
iis-8.5 ×1
powershell ×1
scripting ×1
web-hosting ×1
web-server ×1
windows ×1