通过Powershell更改远程计算机上IIS网站的物理路径

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)

(注意使用反引号进行续行)

  • 他需要首先使用`Import-Module WebAdministration`来实现这个目的. (8认同)
  • 我无需重新启动IIS 7.5即可检测到更改. (3认同)
  • 真的很奇怪......似乎PS v2允许PhysicalPath和physicalPath,而PS v4只允许physicalPath作为-name参数. (3认同)

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配置的更多信息,请参阅以下链接:

IIS7配置参考> system.applicationHost