标签: web-administration

如何从PowerShell指定应用程序池标识用户和密码

我在使用应用程序池标识自动设置Web应用程序和配置IIS时遇到了很多困难.我在用PowerShell编写的Web应用程序部署脚本中执行此操作.我的要求是我需要使用PowerShell脚本将应用程序池标识用户设置为特定的服务帐户mydomain\svcuser和password.以下是示例代码:

$pool = New-Item "IIS:\AppPools\MyAppPool" -Force
$svcuser = "mydomain\svcuser"
$pool.processModel.userName = $svcuser
$password = "somepassword"
$pool.processModel.password = $password
$pool.processModel.identityType = 3
$pool | Set-Item -ErrorAction Stop
Run Code Online (Sandbox Code Playgroud)

当我运行它时,一切似乎都正常工作 - 没有错误被抛出,应用程序身份用户名出现在IIS中 - 但由于某种原因,密码没有正确设置,如果有的话.由于它是一个密码,我无法验证它是否已设置,但我可以断定,如果它是,它没有设置正确.在我手动进入并在IIS中输入密码之前,它不会对生成的应用程序池用户进行身份验证.因此,应用程序在部署到Web服务器后失败,需要手动干预.

我在这里错过了什么吗?

iis powershell iis-7 web-administration powershell-3.0

26
推荐指数
2
解决办法
4万
查看次数

为什么Set-ItemProperty对Windows 10下的IIS应用程序没有影响?

我们的大多数Web应用程序都包含Deploy.ps1 Powershell脚本.Octopus Deploy使用它在生产部署期间配置应用程序,但我们也使用它来设置开发人员的本地IIS设置.在Windows 7,Windows 8.1和我们所有的Win2012生产服务器上都可以正常工作.

它不适用于Windows 10,这似乎是因为Set-ItemPropertycmdlet无效.没有错误消息或任何东西,它只是没有做任何事情.

IIS站点api.example.com已经存在,我们使用Powershell创建/ myapp应用程序,然后将应用程序的物理路径更改为D:\ Projects\Demo

PS C:\> IIS:
PS IIS:\> cd Sites\api.example.com
PS IIS:\Sites\api.example.com> New-WebApplication myapp -site api.example.com -PhysicalPath C:\inetpub\wwwroot

Name             Application pool   Protocols    Physical Path
----             ----------------   ---------    -------------
myapp            DefaultAppPool     http         C:\inetpub\wwwroot

PS IIS:\Sites\api.example.com> set-itemproperty myapp -name PhysicalPath -value D:\Projects\Demo

PS IIS:\Sites\api.example.com> get-itemproperty myapp

Name             Application pool   Protocols    Physical Path
----             ----------------   ---------    -------------
demo             DefaultAppPool     http         C:\inetpub\wwwroot

                                                 ^ THIS IS WRONG!
Run Code Online (Sandbox Code Playgroud)

在Windows 7上运行完全相同的命令集,您将获得相同的输出,但在最后一步,PhysicalPath属性已按预期更改:

PS IIS:\Sites\api.example.com> get-itemproperty myapp

Name             Application pool …
Run Code Online (Sandbox Code Playgroud)

powershell web-administration windows-10 iis-10

19
推荐指数
1
解决办法
3646
查看次数

Windows7中的Add-PsSnapin WebAdministration

我想使用PowerShell在Windows7 64位上管理我的IIS7.

我尝试安装IIS7 Powershell管理单元 http://www.iis.net/download/PowerShell

我"以管理员身份运行",然后键入下面列出的命令:msiexec/I iis7psprov_x64.msi但我收到此错误消息:"PowerShell管理单元是Windows操作系统的一部分.请通过程序和功能或服务器管理器安装"

我认为加载WebAdministration模块不需要这个特殊功能,但我激活了"程序和功能"中的所有选项

打开或关闭Windows功能| IIS | Web管理工具| IIS管理脚本和工具

我做那些检查:

1.)安装Power-Shell

PS C:\Program Files\IIS> $Host.Version


    Major  Minor  Build  Revision
     -----  -----  -----  --------
     2      0      -1     -1



PS C:\Program Files\IIS> $PSVersionTable
    Name                           Value
     ----                           -----
     CLRVersion                     2.0.50727.5448
     BuildVersion                   6.1.7601.17514
     PSVersion                      2.0
     WSManStackVersion              2.0
     PSCompatibleVersions           {1.0, 2.0}
     SerializationVersion           1.1.0.1
     PSRemotingProtocolVersion      2.1



PS C:\Program Files\IIS> get-host
    Name             : ConsoleHost
     Version          : 2.0
     InstanceId       : 445ad8f5-87fc-48f7-b010-f7faf948b86c
     UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
     CurrentCulture   : es-ES
     CurrentUICulture : es-ES
     PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
     IsRunspacePushed …
Run Code Online (Sandbox Code Playgroud)

powershell snap-in windows-7 iis-7.5 web-administration

13
推荐指数
1
解决办法
3万
查看次数

如何使用PowerShell和Web管理模块检查IIS中是否存在应用程序池?

我使用PowerShell自动配置IIS中的网站.我有以下代码为我创建一个Web应用程序池

#Creating a new Application Pool
New-WebAppPool "NewAppPool"
Run Code Online (Sandbox Code Playgroud)

但是在创建池之前,我想检查池是否存在.我该怎么做呢?

请注意:我的系统上没有IIS驱动器.因此,如下所示在路径中提到IIS的命令会失败:

$IISPath = "IIS:\AppPools"
cd $IISPath
if (Test-Path ".\NewAppPool") { Write-Host "NewAppPool exists." }
Run Code Online (Sandbox Code Playgroud)

iis powershell application-pool web-administration

10
推荐指数
1
解决办法
8833
查看次数

Import-Module WebAdministration不会从脚本加载,而是从命令行加载

我正在进入一个PowerShell用于编写脚本的项目.构建使用该WebAdministration模块来管理本地IIS实例.当我运行构建脚本时,尝试导入时会引发以下错误WebAdministration.

错误:06/29/2016 17:28:35:在C:\ dev\src \nib-ravendb\build\ConfigureIis.ps1:10 char:1 + Import-Module WebAdministration + ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ [<< == >>]例外:未加载指定的模块"WebAdministration",因为没有有效的模块文件任何模块目录.错误:1

然而,当我Import-Module WebAdministrationPowerShell命令行运行时,模块被导入,我可以使用它的功能.随后运行构建脚本仍然失败.

我有IIS 7.5PowerShell 4

有没有人知道为什么这个导入会在脚本中失败而在命令行失败,以及如何修复它?

powershell iis-7.5 web-administration

7
推荐指数
3
解决办法
2万
查看次数

如何在不受信任的域中模拟用户?

机器A机器B处于不同的域中.机器A使用VPN来访问机器B的网络.

我试图模仿用户,以便Microsoft.Web.Adminstration机器B上的IIS 中使用一些管理功能.

我试过了什么

  • 我在这里试过这个解决方案:https://forums.iis.net/t/1162205.aspx?Using+Microsoft+Web+Adistrationistration+on+aremote+machine+not+ in+the+ domain.来自LogonUser的returnValue对我来说是假的.当我开始写这篇文章时,我想可能不同的是,海报正在使用两个不同但受信任的域中的机器,但现在我看到他的一台机器只在一个工作组中.老实说,我不确定那种情况与我的情况相比......它是否应该有效相同.

  • 我还尝试了另一种解决方案,它使用不同的登录类型值(NewCredential而不是Interactive)和不同的登录提供程序(WinNt50而不是Default),因为它声称它解决了我的域名不受信任的问题.

  • 也尝试结合这两种解决方案,但到目前为止没有任何工作.

额外信息:

我开始在asp.net mvc项目中执行此操作,但在第一个解决方案要求我调用时切换到控制台应用程序CoInitializeSecurity,显然,它要求事先没有调用它,我不知道如何防止它一个mvc项目(在控制台应用程序中我只需要禁用Visual Studio托管过程).

我要指出,我可以使用NetworkCredential类与NetworkConnection类(https://gist.github.com/AlanBarber/92db36339a129b94b7dd)连接到目标机器和写入文件.所以我完全知道用户/传递工作,我能够从客户端机器上使用它们进行文件访问.我只是无法弄清楚如何冒充他们.

我不认为我可以立即给予奖励,但如果有人能够提供解决方案,我会尽快添加赏金给你.

c# impersonation web-administration

7
推荐指数
1
解决办法
573
查看次数

Powershell命令在Powershell中工作但不在脚本内部,为什么?

我想将我的IIS Bidings归档到csv或txt,我只是在使用该cmdlet玩一下:

Get-ChildItem -path IIS:\Sites
Run Code Online (Sandbox Code Playgroud)

哪个工作完美,也可以使用此命令完成outtiling到.txt:

Get-ChildItem -path IIS:\Sites | out-file "D:\_utils\PowerShell Scripts\IISexport\IISExport.txt"
Run Code Online (Sandbox Code Playgroud)

但是一旦我将它包装到函数中,powershell就会尝试找到物理路径IIS:\ Sites当然不存在.

Get-ChildItem : Cannot find drive. A drive with the name 'IIS' does not exist.
At D:\_utils\PowerShell Scripts\IISReport.ps1:8 char:1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的脚本非常简单:

$today = Get-Date -format M.d.yyyy

function IISexport

{
Get-ChildItem -path IIS:\Sites
}

IISexport | out-file "D:\_utils\PowerShell Scripts\IISexport\IISExport$today.txt"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我想将其归档,因为我希望将它放入一个更大的脚本中,该脚本从xx webservers中删除了我的webbindings.

我认为它与已经在控制台中给出但不在我的脚本中的env变量有关.但我不知道如何管理它们.已经尝试过get-childitem evn: ,这给我带来了很多变数.

iis powershell web-administration powershell-4.0

6
推荐指数
1
解决办法
7365
查看次数

使用passthru确保cmdlet完成

我很困惑-Passthru

据我了解,该-Passthru参数用于将cmdlet的结果传递给管道,即使cmdlet本身不产生任何结果。

我尝试先编写这些代码:(我尝试不使用Restart-WebAppPoolcmdlet 来回收IIS应用程序池)

Stop-WebAppPool  -Name Foo
Start-WebAppPool -Name Foo
Run Code Online (Sandbox Code Playgroud)

如我所料,停止IIS ApplicationPool需要花费时间,并且由于PowerShell不等待cmdlet完成其工作,因此将Stop-WebAppPool停止应用程序池并返回。由于应用程序池尚未准备好开始,因此Start-WebAppPool将调用并引发错误。

因此,我将代码更改为以下代码:

Stop-WebAppPool  -Name Foo
Start-Sleep -Seconds SomeValueNeedToGetMeasuredAndChanged
Start-WebAppPool -Name Foo
Run Code Online (Sandbox Code Playgroud)

它可以工作,但不太灵活。

然后,我-Passthru将这两个cmdlet 添加到其中,它变为:

Stop-WebAppPool  -Name Foo -Passthru
Start-WebAppPool -Name Foo -Passthru
Run Code Online (Sandbox Code Playgroud)

一切正常,没有错误。

就我而言,我认为:

在真正停止/启动应用程序池之前,Stop / Start-WebAppPool cmdlet不会产生任何结果。由于-Passthru需要将某些内容传递到管道,因此PowerShell等待cmdlet产生其结果,在这种情况下,将停止/启动应用程序池以执行下一个。

我在-Passthru或上都找不到任何有用的手册Stop-WebAppPool,因此在这种情况下可以这样做吗?

iis powershell web-administration powershell-3.0

6
推荐指数
1
解决办法
4640
查看次数

站点的状态属性在IIS Express中抛出"NotImplementedException"

我使用Microsoft.Web.Administration.dll通过使用以下代码检查我的网站的状态.它适用于IIS,但是当它在IIS Express中使用时,'State'属性会抛出'NotImplementedException'.

ServerManager manager = new ServerManager()
foreach (Site site in manager.Sites){
   If (site.State == ObjectState.Started)
   {
        .....
   }
}
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个问题吗?

c# asp.net iis-express web-administration

5
推荐指数
1
解决办法
599
查看次数

特定的PowerShell模块不自动加载

我在Windows Server 2012 R2上使用PowerShell 4.

调用来自此模块的Cmdlet时,特定模块WebAdministration不会自动加载.我试过的所有其他模块成功自动加载.我可以使用Import-Module手动加载此模块,它的行为符合预期.

  • PSModulePath环境变量包含模块的路径.此路径中的其他模块自动加载.
  • 该模块不是自定义的.它是一个内置的IIS功能.该功能已启用.
  • 自动加载已启用.$ PSModuleAutoLoadingPreference设置为"All"
  • Get-Command"Get-WebBinding"不起作用,但是Get-Command | 其中{$ _.Name -eq"Get-WebBinding"}的确如此.
  • Get-Module -ListAvailable | 其中{$ _.Name -eq"WebAdministration"}返回具有正确路径的模块.

PSModulePath =%SystemRoot%\ system32\WindowsPowerShell\v1.0\Modules \ WebAdministration Module Path = C:\ Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration



简单测试输出


PS C:\ Users\Administrator> $ PSModuleAutoLoadingPreference ="All"

PS C:\ Users\Administrator> Get-WebBinding Get-WebBinding:术语"Get-WebBinding"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.at line:1 char:1 + Get-WebBinding + ~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(Get-WebBinding:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

PS C:\ Users\Administrator> Import-Module WebAdministration

PS C:\ Users\Administrator> Get-WebBinding

protocol bindingInformation sslFlags -------- ------------------ -------- http*:8082:0 http*:8081:0




任何关于为什么自动加载不起作用的建议将不胜感激.谢谢!

iis powershell iis-7.5 web-administration powershell-4.0

5
推荐指数
1
解决办法
697
查看次数

如何使用PowerShell设置IIS的Forms Authentication(system.web/authentication)的overrideMode?

我需要使用powershell自动配置新的IIS服务器,我需要更改Forms身份验证功能(其overrideMode)的功能委派设置.

我基本上想要改变使用此命令时看到的overrideMode:

Get-WebConfiguration -Filter //system.web/authentication -PSPath 'MACHINE/WEBROOT/APPHOST' | fl *
Run Code Online (Sandbox Code Playgroud)

我可以使用Set-WebConfiguration为其他类型的身份验证方法设置它,例如,对于Windows身份验证,我会这样做:

Set-WebConfiguration -Filter //System.webServer/Security/Authentication/windowsAuthentication -PSPath 'MACHINE/WEBROOT/APPHOST' -Metadata overrideMode -Value Allow
Run Code Online (Sandbox Code Playgroud)

但由于某些原因我不能对//system.web/authentication做同样的事情,我不明白为什么.当我尝试时,我收到此错误:

PS H:\> Set-WebConfiguration -Filter //System.web/Authentication -PSPath 'MACHINE/WEBROOT/APPHOST' -Metadata overrideMode -Value Allow
Set-WebConfiguration : Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config
Line number: 974
Error: This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default 
(overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".
At …
Run Code Online (Sandbox Code Playgroud)

iis powershell web-administration

5
推荐指数
1
解决办法
346
查看次数

如何使用 Powershell 更新 IIS 10 上站点的“物理路径”?

创建站点时,我设法使用以下代码行设置路径

New-WebSite -Name "mysite" -port 8084 -PhysicalPath "c:\inetpub\wwwroot" -ApplicationPool "myappPool"
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何更新路径,但通过配置编辑器找不到任何内容。我以为我已经通过以下命令获得了它

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.applicationHost/sites/site[@name='mysite']/virtualDirectoryDefaults" -name "physicalPath" -value "c:\inetpub\wwwroot\mysite"
Run Code Online (Sandbox Code Playgroud)

...但是,我想更新的不是虚拟目录,而是实际站点...

iis powershell web-administration

5
推荐指数
1
解决办法
9037
查看次数

如何使用PowerShell设置IIS ApplicationPool"专用内存限制"值

我正在使用PowerShell自动部署网站,最近发现了无法使用PS设置的AppPool设置.或者至少我没有设法找到如何做到这一点.

$appPool = $serverManager.ApplicationPools.Add($sitename)...
Run Code Online (Sandbox Code Playgroud)

我需要将"Private Memory Limit"设置为某个值,但看起来在ApplicationPoolApplicationPoolRecycling对象中没有这样的属性.

anybode是否知道此问题的解决方法?

iis powershell web-administration

2
推荐指数
1
解决办法
7349
查看次数