6

为了在 IIS 下创建目录并将 Web 应用程序添加到 IIS,我将此脚本放在 Azure DevOps 服务器部署组作业 Powershell 任务中:

New-Item -Path "C:\inetpub\wwwroot" -Name "MyNewApp" -ItemType "directory" `
C:\Windows\system32\inetsrv\appcmd.exe add app `
/site.name:"Default Web Site" `
/path:"/MyNewApp" `
/physicalPath:"C:\inetpub\wwwroot\MyNewApp"`

当此任务运行时,它会引发错误:(为清楚起见,删除了时间戳)

APP 对象“默认网站/MyNewApp”已更改

错误(hresult:80090016,消息:无法提交配置更改。

键集不存在)

在以我自己或服务帐户登录的情况下从 Powershell 控制台执行上述代码后,将返回以下消息:

添加了 APP 对象“默认网站/MyNewApp”

添加了 VDIR 对象“默认网站/MyNewApp”

我可以在 IIS 管理器中确认已创建目录和应用程序。

我无法在控制台中重现该错误。只有当它作为 Release Agent 运行并通过 DevOps Server Web 界面启动时才会发生此错误。

我尝试了以下方法:

更新 1

我确定“密钥集不存在”错误是由于尝试使用 DefaultAppPool 应用程序池作为设置的一部分。此应用程序池未使用服务帐户设置,但仍使用默认应用程序池标识设置。

但是,在进行此更改后,我有一个新错误:

APP 对象“默认网站/MyNewApp”已更改

错误(hresult:80070057,消息:无法提交配置更改。

参数不正确。)

...

进程“appcmd.exe”以代码“87”退出。

非常感谢任何指导。

更新 2

我记录了当前正在查看的 Microsoft 社区问题。你可以在这里看到它。

4

1 回答 1

0

You could also look at the .net implementation with the servermanager:

https://docs.microsoft.com/en-us/iis/manage/scripting/how-to-use-microsoftwebadministration

https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration.servermanager?view=iis-dotnet

Should not be very hard to use this in powershell.

于 2020-10-01T19:03:33.400 回答