当我使用"appcmd list appool/text:*"命令时,它以明文形式显示应用程序池标识密码.我也可以使用PowerShell中的Get-WMIObject以明文形式查看密码.这可能是严重的安全威胁,因为具有正确访问凭据的用户可以轻松查看密码.
IIS(v7.5)中的应用程序池使用域用户帐户/密码进行配置.在applicationHost.config文件中,使用"IISWASOnlyAesProvider"加密提供程序加密密码.但是,当我使用上述两种方法中的任何一种时,密码都会以明文形式显示.
有没有办法以这样的方式加密密码,当我使用上述两种方法时,它们不会以明文显示?
我们在部署脚本中使用appcmd来设置服务器,我需要确保向现有站点添加绑定不会引发错误
C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:"abc.com"
/+bindings. [protocol='http',bindingInformation='*:80:alias-abc.com']
Run Code Online (Sandbox Code Playgroud)
但是在下一个脚本运行中我得到了错误..
无法使用组合键属性协议添加"绑定"类型的重复集合条目,bindingInformation'分别设置为'http,*:alias-abc.com'
有没有办法在appcmd中添加绑定之前检查绑定是否存在
(不允许使用powershell - 因此必须是appcmd或其他命令行exe)
谢谢
我有一个部署到Azure Web角色(云服务,而不是Azure Web站点)的SignalR解决方案,为了确保我们可以最大化每个实例的连接数,我需要对各种ASP.NET设置进行一些更改,如详细在这篇文章中:http://www.asp.net/signalr/overview/performance/signalr-performance#tuning
使用APPCMD进行相关更改的启动任务可以轻松更改appConcurrentRequestLimit和requestQueueLimit设置.但是,maxConcurrentRequestsPerCPU设置驻留在aspnet.config文件中,该文件无法通过相同的机制进行更改.
我尝试直接使用启动任务更新该文件(现在只是一个基本文件替换),但是在启动任务完成后似乎被Azure运行时替换,因此更改丢失了.我可以RDP进入机器并手动进行更改,因此我已经看到它可以工作,但对于我们希望按需扩展和缩小的服务而言,这是不可持续的.
有关如何在Azure环境中更改此设置的任何想法将不胜感激!
如何让appcmd编写命令?使用Windows 10.出现此错误:
'appcmd'不被识别为内部或外部命令,可操作程序或批处理文件.
另外,如果我使用了这个命令:
appcmd删除网站"默认网站"
如果我做相反的事情 - 我使用add而不是delete吗?
提前致谢!
马林
%WINDIR%\system32\inetsrv\appcmd.exe set site /site.name:"WebRole_IN_0_CB" /[Path='/'].applicationPool:"ASP.NET v4.0" >>CBLog.log
powershell.exe -command Set-ExecutionPolicy Unrestricted
powershell.exe .\CheckIfSuccessful.ps1
Run Code Online (Sandbox Code Playgroud)
我想运行上面的脚本,如果 appcmd.exe 由于网站尚未启动和准备好而无法执行它,我会在 CBLog.log 文件中收到以下错误消息。
错误(消息:找不到标识符为“WebRole_IN_0_CB”的站点对象。)
在 CheckIfSuccessful.ps1 我想创建一个 Powershell 脚本来循环,它运行 appcmd 命令并再次检查错误。然后休眠 5 秒,然后重试,直到成功。
我将如何在 Powershell 中执行此操作?
高度赞赏,
更新:
好的,非常感谢 $lastexitcode 的提示,虽然它看起来很有希望。似乎我在 Powershell 中转换单引号时遇到问题:(以下是我初始 appcmd 命令的一部分)
/[Path='/'].applicationPool:"ASP.NET v4.0"
Run Code Online (Sandbox Code Playgroud)
我如何在powershell中引用它?我试图简化它,以便 powershell 减少它的麻烦,但现在看来我的命令是错误的,正如它现在所说的:
错误(消息:找不到标识符为“v4.0”的站点对象。)
& $Env:WinDir\system32\inetsrv\appcmd.exe set site '/site.name:"WebRole_IN_0_CB"' "/[Path='/'].applicationPool:`"ASP.NET v4.0`"" >CBLog.log
if($lastexitcode -ne '0')
{
while($lastexitcode -ne '0')
{
Start-Sleep -s 5
& $Env:WinDir\system32\inetsrv\appcmd.exe set site '/site.name:"WebRole_IN_0_CB"' "/[Path='/'].applicationPool:`"ASP.NET v4.0`"" >CBLog.log
}
}
Run Code Online (Sandbox Code Playgroud)
更新二: 我已经正确地逃脱了。但我仍然收到错误消息。如果我在创建该站点后单独运行 appcmd,日志文件就可以了。请问有什么建议吗?
请帮我弄清楚如何正确地转义参数,以便在PowerShell中调用appcmd时它们可以工作.
我的脚本看起来像这样:
$defaultWebSite = "Default Web Site"
$appCmd = "C:\windows\system32\inetsrv\appcmd.exe"
$addHeaderP3P = "set config ""$defaultWebSite"" -section:system.webServer/httpProtocol /+""customHeaders.[name='P3P',value='policyRef=`\`"/w3c/p3p.xml`\`",CP=`\`"DSP COR NID OUR COM PRE`\`"']`""
Write-Output "Here's the argument string: " $addHeaderP3P
Write-Output "`nInvoke Result:"
Invoke-Expression "$appCmd $addHeaderP3P"
Write-Output "`n& Result:"
& $appCmd --%"$addHeaderP3P"
Run Code Online (Sandbox Code Playgroud)
在powershell_ise中运行时输出为:
PS C:\Users\robert.bratton> D:\Junk\p3pheader.ps1
Here's the argument string:
set config "Default Web Site" -section:system.webServer/httpProtocol /+"customHeaders.[name='P3P',value='policyRef=\"/w3c/p3p.xml\",CP=\"DSP COR NID OUR COM PRE\"']"
Invoke Result:
Failed to process input: The parameter 'COR' must begin with a / or - (HRESULT=80070057).
& Result: …Run Code Online (Sandbox Code Playgroud) 我正在使用app cmd在IIS8中创建一个新的虚拟目录.这个语法是:
appcmd add vdir /app.name:<NAME> /path:<PATH> /physicalPath:<PHYSICAL-PATH>
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我需要设置一些凭据,这在GUI中很容易(虚拟目录 - >基本设置 - >连接为).当我设置它时,我可以在我的applicationHosts.config文件中看到它正在更新xml条目.所以我应该可以使用appcmd手动设置.我正在使用语法导航到正确的xml元素,因此我可以设置attribut"userName"并添加属性"password"
这是我的xml:
<sites>
<site name="EXAMPLESITE" id="4">
<application path="/" applicationPool="EXAMPLEPOOL">
<virtualDirectory path="/" physicalPath="c:\wwwroot\" userName="" />
<virtualDirectory path="/upload" physicalPath="\\SOME-COMPUTER-ON-NETWORK\upload" userName="" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80" />
</bindings>
</site>
</sites>
Run Code Online (Sandbox Code Playgroud) 我不想删除并重新创建站点,我只想能够将整个配置应用于该站点并覆盖任何不同的设置。
我备份了站点配置%windir%\system32\inetsrv\appcmd list site /config /xml > c:\sites.xml
该命令会引发错误:
appcmd.exe add site /in < c:\sites.xml
ERROR ( message:Failed to add duplicate collection element "mysite". )
Run Code Online (Sandbox Code Playgroud)
我是否真的必须将所有 IIS 配置分解为单独的 appcmd 命令,或者是否有一种方法可以一次性应用整个 xml 并且仅覆盖设置?
我想要一个 xml 模板,可以将其推送到托管该站点的所有网络服务器。
我有以下脚本来设置我的网站...
%AppCmd% ADD SITE /name:%SiteName% /physicalPath:%SitePath% /bindings:http/*:80:%SiteName%
%AppCmd% SET SITE /site.name:%SiteName% /[path='/'].applicationPool:%SiteName%
Run Code Online (Sandbox Code Playgroud)
我现在想做的是找出如何为 HTTPS添加附加绑定。看到很多页面现在描述将主机头添加到现有的 https 绑定,但没有显示实际如何像在 UI 中那样添加新绑定。
注意:我相信我需要两个绑定,一个 HTTP(端口 80)和一个 HTTPS(端口 443),因为目前我需要打开端口 80,因为我使用重定向规则来交换在端口 80 上访问站点的人443.如果有一种方法可以避免这样做,并且只是我的绑定,我完全赞成。
在IIS管理器上为每个站点设置环境变量非常容易:
我正在寻找使用appcmd.exe的方法,所以我可以在我的安装脚本中包含它.
我得到的最接近的是:
C:\>C:\Windows\System32\inetsrv\appcmd.exe set config "dashboard" -section:system.webServer/aspNetCore /environmentVariables.[name='foo',value='bar'] /commit:apphost
Run Code Online (Sandbox Code Playgroud)
- >仪表板是我网站的名称.
但是此命令返回此错误:
错误(消息:找不到请求的集合元素.)