【发布时间】:2013-10-23 17:07:29
【问题描述】:
我正在使用 PowerShell v3.0 和 IIS Administration Cmdlets 在我的 IIS 7 实例中添加和删除网站。我使用 Import-Module WebAdministration 来确保 IIS: 驱动器可用,并且我能够使用 Remove-Item 通过 IIS: 驱动器删除文件。出于某种原因,尽管当我使用以下代码时,Split-Path 总是返回一个空字符串,即使 Remove-Item 工作正常。
$iisPath = Join-Path "IIS:\Sites" $fullPath
Remove-Item -Path $iisPath
$parent = Split-Path -Path $iisPath -Parent
即使我注释掉 Remove-Item 行,Split-Path 仍然返回一个空字符串。 $iisPath 值看起来像这样:
IIS:\Sites\Application Services\2.5.12\OurProductServicesDirectory
所以我希望 $parent 包含:
IIS:\Sites\Application Services\2.5.12
但是 $parent 总是空的。我也尝试使用 $iisPath = "IIS:\Sites\$fullPath" 而不是 Join-Path 创建 $iisPath,但仍然得到相同的结果。
任何想法为什么在使用 IIS: 驱动器时拆分路径似乎不起作用,或者如何修复它?
===更新===
所以我创建了一个小示例脚本,看看是否可以重现该问题。这里是:
$Block = {
Import-Module WebAdministration
$path = "IIS:\Sites\Application Services\2.5.12\OurProductServicesDirectory\"
Test-Path -Path $path
$parent = Split-Path -Path $path -Parent
Write-Host Parent is $parent
}
$Session = New-PSSession -ComputerName "Our.WebServer.local"
Invoke-Command -Session $Session -ScriptBlock $Block
使用这个脚本 $parent 确实会得到一个值,但是写入控制台的文本是:
True
Parent is IIS:Sites\Application Services
当我期望它是:
True
Parent is IIS:\Sites\Application Services\2.5.12
所以在我的简单示例脚本中,我确实得到了一个值,但它是错误的值;它返回祖父目录而不是父目录,并从 IIS: 之后删除反斜杠。
我不知道为什么我在这个示例脚本和我的主脚本中得到不同的结果,但是这两个结果似乎都是错误的。任何建议表示赞赏。
【问题讨论】:
标签: iis powershell path split