设为首页 收藏本站
查看: 940|回复: 0

【翻译】使用IIS 7.0 PowerShell 创建web站点,Web应用,虚拟路径和应用程序池

[复制链接]

尚未签到

发表于 2015-8-12 11:25:09 | 显示全部楼层 |阅读模式
        原文链接:Creating Web-Sites, Web Applications, Virtual Directories and Application Pools
        在本文中您将学会如何去创建WEB站点,Web Applications, 虚拟目录和应用程序池.
介绍
        IIS PowerShell 名空间包括诸如: Web-Sites, Apps, Virtual Directories 和 Application Pools.
  使用内置的PowerShell cmdlets可以很容易创建一个名空间项和管理该项.
创建Web站点
        如果您熟悉PowerShell 的话,就会知道在各种PowerShell 名空间下New-Item cmdlet 通常被用于创建
  新项。 举个例子,当前命令 "New-Item c:\TestDirectory" 会创建一个新的文件夹 (尽管多数人使用New-Item
  的别名命令 "MD" 或 "MKDIR" ). 在IIS 7.0 PowerShell 名空间下,New-Item 也常用于创建新的Web站点.
参数
        在创建一个文件系统路径时,您需要指定一个路径名称. 不巧的是当前创建WEB站点时这是不够的. 除了像
  文件系统路径这样的参数之外,还需要network bindings. 下面的命令用于创建一个新的WEB站点并使用dir命令
  进行显示:
  

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test

PS IIS:\Sites> dir

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

  
  这里直接使用了 -physicalPath 参数. 然而您可能会问: -bindings 看起来咋这么复杂?.
       在构造时通常使用hashtable (在 这里 了解更多PowerShell hash tables信息). hash table 中的键值对表示一个
  设置集合,该集合在IIS站点bindings section中会反射出相关属性:
  

<bindings>
        <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>   
  现在我们找出了一个使用hash table的原因: IIS 配置是可以使用属性进行扩展的。 (查看 这里 了解更多信息) . 您
  可以想像一下使用其它属性扩展 <binding> 元素节点.  hash table 的键值对提供了这种弹性.
        坦白说,该语法有一点复杂. 我们正在考虑在Tech Preview中封装一些典型任务:比如创建站点的方法或脚本。
删除站点
        下面是删除刚创建的站点.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

创建Web Applications
    创建Web Applications 要比创建站点要容易. 下面:


PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application


Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test  
     您仅需指定的一个参数是 type (-type) ,因为在一个站点下,您可能要创建一个Applications 或一个虚拟路径.
通过指定 -type 参数,就会告之 IIS Provider 要创建一个application.
  
     要删除这个 application 的话,也可以使用Remove-Item(见上面删除站点).  
创建虚拟目录
      要创建虚拟目录,您也要使用New-Item cmdlet. 下面会在指定站点(Default Web Site)下创建两个虚拟目录。
一个位于站点下,一个位于刚创建的 Web Application (DemoApp)下面.


  

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1

Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1


PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2

Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2


创建应用程序池
  
      创建应用程序池更简单. 仅需指定一个名称即可.

PS IIS:\> new-item AppPools\DemoAppPool

Name                     State
----                     -----
DemoAppPool              {}
      简单吧,不是吗? 现在让我们将这些知识点连起来做一个完整的方案.
将所有知识点连在一起
    在这个方案中,我们将执行下面这些步骤:


  • 创建一系列的文件系统路径用于绑定站点, web applications 和虚拟文件。

  • 向新创建的目录下拷贝一些简单的web内容。

  • 创建一个新的应用程序池。

  • 创建一个新的站点,一个新的 application 以及两个虚拟目录并将其绑到新创建的应用程序池上。

  • 使用浏览器请求(访问这些内容)。
步骤 1: 创建目录
   我们使用 New-Item cmdlet 来创建新的文件系统目录. 执行下面命令 (如不想指定-type 参数的话,可使用'md'):

New-Item C:\DemoSite -type Directory

New-Item C:\DemoSite\DemoApp -type Directory

New-Item C:\DemoSite\DemoVirtualDir1 -type Directory

New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

步骤 2: 拷贝内容
      现在向这些目录中写入一些 html 内容(文件):

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"

Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"

Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"

Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

步骤 3: 创建新的应用程序池
     为站点创建一个新的应用程序池 'DemoAppPool' (如之前的例子中您也创建的话,请先删除它).  

New-Item IIS:\AppPools\DemoAppPoolStep 4: 创建新的站点, Web Applications 和虚拟目录并绑定到应用程序池上
     这里简化一下,我们创建 DemoSite, DemoApp 和两个虚拟目录:
      DemoVirtualDir1 绑定到DemoSite 下
      DemoVirtualDir2 绑定到DemoApp 下
     我们将DemoSite 和 DemoApp 绑定到之前创建的 DemoAppPool 上. 为了不与'Default Web Site' 冲突,
这里DemoSite 的端口设置为 8080:


New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}

Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool

New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application

Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool

New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory

New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory


     好,下面就要请求这些web 内容了。
步骤 5: 请求Web 内容
     当然,您可以打开浏览器并敲入地址 http://localhost:8080/ ,以及其它链接(上面已创建)。但本文是PowerShell
的walkthrough 所以我们使用 .NET WebClient classes 来实现这个请求:


$webclient = New-Object Net.WebClient

$webclient.DownloadString("http://localhost:8080/");

$webclient.DownloadString("http://localhost:8080/DemoApp");

$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");

$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

If you feeling adventurous you can also use Internet Explorer object itself:

$ie = new-object -com InternetExplorer.Application

$ie.Visible = $true

$ie.Navigate(http://localhost:8080/);

总结
     本文中,您了解了如何使用PowerShell创建WEB站点, Web Applications, 虚拟目录和应用程序池.
除此之外,我们还使用 PowerShell 创建了一个功能(函数)化的完整方案.

     译者注: PowerShell Provider for IIS 7.0 (x86) - CTP2下载连接,请点击这里:)
  
    当然除了上面的方式来管理IIS站点之外,还可以使用Microsoft.Web.Administration(该dll位于"Windows\
  System32\inetsrv目录下)。下面的PS脚本就是实现指量创建,删除等站点操作功能的:

  


function Setup-IIS
{
    param([int]$NumSites)
    for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        $Appfolder = "c:\inetpub\webroot\Site$i"
        if (-not (test-path $Appfolder))
        {
            md $AppFolder -force | out-null
            $defaultHTM = "$Appfolder\default.htm"
            echo "This is site $i" | out-file $defaultHTM
        }
    }
}
function Cleanup-IIS
{
    param([int]$NumSites)
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")

    $mgr = new-object Microsoft.Web.Administration.serverManager

    for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        $AppPoolName= "AppPool_$i"
        $SiteName = "WebSite_$i"
        $Appfolder = "c:\inetpub\webroot\Site$i"
        $mgr.Sites.Remove($mgr.Sites[$SiteName])
        $mgr.ApplicationPools.Remove($mgr.ApplicationPools[$AppPoolName])
        if (test-path $Appfolder)
        {
            rd $Appfolder -recurse
        }
    }
    $mgr.CommitChanges()
}

function Makewebs-IIS
{
    param([int]$NumSites)

    $start = get-date
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") | out-null

    $mgr = new-object Microsoft.Web.Administration.serverManager

    for($i=0 ; $i -lt $NumSites ;  $i++)
    {
        $AppPoolName= "AppPool_$i"
        $SiteName = "WebSite_$i"
        $portNumber = 8000 + $i
        $mgr.ApplicationPools.Add($AppPoolName) | out-null
        $Appfolder = "c:\inetpub\webroot\Site$i"

        $site = $mgr.Sites.Add($SiteName,$Appfolder,$portNumber)
        $site.ServerAutoStart = $true

        $app = $site.Applications[0]
        $app.ApplicationPoolName = $AppPoolName
        #$site.Bindings.Add("*:$portNumber:", "http") | out-null            
    }
    $mgr.CommitChanges()

    $duration = [DateTime]::Now - $start
    write-host "Total seconds: " + $duration.TotalSeconds.Tostring()
}
  
  我们只要以&#8220;管理员身份&#8221;运行Powershell,并在命令行下输入如下(以创建站点为例)代码:   

>Makewebs-IIS 10  
  这样就会批量创建10web站点了:)
     好了,今天的内容就先到这里了。
  
     原文链接:http://www.iyunv.com/daizhj/archive/2008/12/10/1352019.html
       作者: daizhj, 代震军
       Tags: iis7,powershell,powershell provider
       网址: http://daizhj.iyunv.com/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97876-1-1.html 上篇帖子: shell脚本之条件判断 下篇帖子: 利用Powershell在IIS上自动化部署网站
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表