2016-11-22 58 views
2

すべてのIISアプリケーションの名前を取得してフォルダに変換するスクリプトを作成しようとしています。その後、同じ名前のセットを使用してアプリケーションに変換し直します。ループに問題があり、入力変数の形式と関係があると思われます。$AppNamesIIS 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

関連する問題