Rya*_*nch 27 wmi iis-7 powershell-2.0
我目前正在开发一个部署脚本,它将占用我的网站,从svn导出它,删除其中的任何测试文件等,缩小javascript/css,将代码复制到远程Web服务器,然后切换物理路径现有站点到新目录.
到目前为止,除了在IIS中切换物理目录外,我还能正常工作.
$IIsServer = Get-WmiObject Site -Namespace "root/WebAdministration" -ComputerName $serverIP -Credential $credentials -Authentication PacketPrivacy
$site = $IIsServer | Where-Object {$_.Name -eq $siteName}
Run Code Online (Sandbox Code Playgroud)
当我查看我拥有的值时,我无法找到物理路径属性.
任何建议将不胜感激.
Dou*_*oug 48
这也有效:
PS IIS:\Sites> Set-ItemProperty IIS:\Sites\Staging `
-name physicalPath `
-value "C:\blah\Web"
Run Code Online (Sandbox Code Playgroud)
(注意使用反引号进行续行)
Kev*_*Kev 23
root/WebAdministration WMI提供商的问题是它的功能不是很丰富.
您可以做的是使用Microsoft.Web.Administration托管API.如果在服务器本身上运行,此脚本将起作用.
[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$siteName = "Default Web Site"
$serverIP = "your ip address"
$newPath = "your new path"
$serverManager = New-Object Microsoft.Web.Administration.ServerManager
## $serverManager = [Microsoft.Web.Administration.ServerManager]::OpenRemote($serverIP)
$site = $serverManager.Sites | where { $_.Name -eq $siteName }
$rootApp = $site.Applications | where { $_.Path -eq "/" }
$rootVdir = $rootApp.VirtualDirectories | where { $_.Path -eq "/" }
$rootVdir.PhysicalPath = $newPath
$serverManager.CommitChanges()
Run Code Online (Sandbox Code Playgroud)
如果您需要远程执行此操作,您会注意到有一条注释掉的行可能对您有用:
## $serverManager = [Microsoft.Web.Administration.ServerManager]::OpenRemote($serverIP)
Run Code Online (Sandbox Code Playgroud)
不幸的是,MS没有想到提供一种提供凭证的方法.这意味着运行脚本的帐户需要在远程服务器上授予的所有权限.我现在不能尝试这个,因为我不在AD环境附近.
脚本本身将更新站点根物理路径(/).
有关IIS7配置的更多信息,请参阅以下链接:
| 归档时间: |
|
| 查看次数: |
22709 次 |
| 最近记录: |