我正在使用PowerShell v3.0和IIS Administration Cmdlets來添加和從我的IIS 7實例中刪除網站。我使用導入模塊Web管理以確保IIS:驅動器可用,並且我可以使用Remove-Item通過IIS:驅動器刪除文件。由於某些原因,儘管當我使用下面的代碼時,Split-Path總是返回一個空字符串,即使Remove-Item工作正常。PowerShell拆分路徑無法與IIS正常工作:驅動器限定符
$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
所以我希望$家長包含:
IIS:\Sites\Application Services\2.5.12
但是$父母總是空的。我也嘗試使用$ iisPath =「IIS:\ Sites \ $ fullPath」而不是Join-Path來創建$ iisPath,但仍得到相同的結果。
任何想法爲什麼Split-Path在使用IIS:驅動器時似乎不工作,或者如何解決它?
=== UPDATE ===
所以我創建了一個微小的示例腳本,看看我是否能重現該問題。那就是:
$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
使用這個腳本$父也得到一個值,但寫入控制檯文字是:
True
Parent is IIS:Sites\Application Services
時,我希望它是:
True
Parent is IIS:\Sites\Application Services\2.5.12
所以在我的簡單示例腳本中,我確實得到了一個值,但它是錯誤的值;它將返回祖父目錄而不是父目錄,並且它會從IIS:後刪除反斜槓。
我不知道爲什麼我在這個示例腳本中得到不同的結果,然後在我的主腳本中,但是這兩個結果似乎都是錯誤的。任何建議表示讚賞。