2016-11-22 51 views
2

我正在嘗試編寫一個腳本,該腳本捕獲所有IIS應用程序的名稱並將它們轉換回文件夾。然後採用同一組名稱並將它們轉換回應用程序。我的循環出現問題,我認爲它與輸入變量的格式有關$AppNames將IIS Web應用程序轉換爲文件夾並返回

我試圖使用$AppNames.ToString(),但這並不奏效。有任何想法嗎?

$AppNames1 = Get-Webapplication -Site "Mgmtservice" | Select @{e={$_.Path.Trim('/')};l="Name"} | Format-Table -HideTableHeaders 
$AppNames1 

$Site = "MgmtService" 

ForEach ($AppName in $AppNames) 
{ 
    Remove-WebApplication -Name $_ -Site MgmtService 
} 

Start-Sleep 6 

ForEach ($AppName in $AppNames) 
{ 
    $Path1 = "IIS:\Sites\Mgmtservice\" 
    $Path = $Path1 + $AppName 
    ConvertTo-WebApplication -PSPath $Path 
} 
+0

我會想象格式表混亂與輸出... – 4c74356b41

回答

2

你的代碼有很多錯誤, G。你在你的foreach循環中使用$_,你應該使用$AppName。或者您重複執行$AppNames,但您將輸出從Get-Webapplication分配到$AppNames1。你也不應該在那裏使用Format-Table

所以我試着把所有的東西,只要給它一個嘗試:

$AppNames = Get-Webapplication -Site "Mgmtservice" | ForEach-Object { $_.Path.Trim('/')} 
$AppNames | ForEach-Object { Remove-WebApplication -Name $_ -Site MgmtService } 
Start-Sleep 6 
$AppNames | ForEach-Object { ConvertTo-WebApplication -PSPath (Join-Path 'IIS:\Sites\Mgmtservice\' $_) } 
+0

什麼區別'$ _'或'$ appname'。他們是一樣的? – 4c74356b41

+1

@ 4c74356b41不,'$ _'是*管道對象*,而'$ appname'是迭代中分配給當前元素的變量。他們沒有共同之處,'$ _'在他的例子中不起作用。 –

+0

馬丁感謝你的教訓。我有點自學,所以我很感激你爲我澄清$ _和$ AppName。我會檢查代碼並讓你知道。 – JRN

相關問題