【问题标题】:PowerShell Split-Path does not work properly with IIS: drive qualifierPowerShell 拆分路径不适用于 IIS:驱动器限定符
【发布时间】: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


    【解决方案1】:

    因此,因为 IIS: 限定符通过导入 WebAdministration 模块而有效,所以我将假设 Split-Path 根本没有设计为与 IIS: 限定符一起使用,这就是它不处理它的原因正确。

    我发现的解决方法只是在使用拆分路径时从我的路径中排除 IIS:\Sites\。所以我原来的例子会变成:

    Remove-Item -Path "IIS:\Sites\$fullPath"
    $parent = Split-Path -Path $fullPath -Parent
    

    所以基本上我只是将 IIS:\Sites\ 从我的所有路径中移除,然后在需要时显式添加它,例如在调用 Remove-Item、Test-Path、Get-ChildItems 时,等等。这不是最好的解决方案,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2017-09-18
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多