我试图编写一个powershell脚本来捕获我所有IIS应用程序的名称,并将它们转换回文件夹。然后采用相同的名称集并将其转换回应用程序。我的循环有问题,我相信这与输入变量$AppNames的格式有关

我尝试了$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
}

最佳答案

您的代码中有很多错误,例如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\' $_) }

关于powershell - 将IIS Web应用程序转换为文件夹并返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40751374/

10-12 02:27