2017-05-31 7 views
0

私は、現在実行中のすべてのAppPoolsを予定された時間に早朝にリサイクルするPowershellスクリプトをまとめています。今のところ、私はローカルマシン上で動作させようとしているだけで、 "パラメータ '名前'の引数を検証できません。引数はnullです。"Restart-WebAppPoolがforeachを使用して失敗する

# Load IIS module: 
Import-Module WebAdministration 

# Get pool names: 
$poolList = (Get-ChildItem -Path IIS:\AppPools | Where {$_.State -eq 
"Started"} | Select -ExpandProperty Name) 

# Recycle Web App Pools 
foreach ($item in $poolList) 
{ 
Write-Host "Processing" $item -ForegroundColor Green 
Invoke-Command -ComputerName localhost -ScriptBlock {Restart-WebAppPool - 
Name $item} 
} 

私はスクリプトを実行すると、各AppPool項目を循環します。私はこの行でそれを参照してください...

Write-Host "Processing" $item -ForegroundColor Green 

...しかし、Invoke-Commandはパラメータ 'Name'がnullであると言います。私は何かシンプルなものを見逃しているが、それが何であるか分からないと確信している。

ご協力いただきありがとうございます。 Invoke-Commandコマンドスクリプトブロックにパラメータを渡す

+1

[スクリプト名の変数とのPowershell Invoke-Commandコマンド]の可能な重複(https://stackoverflow.com/questions/11738227/powershell-invoke-command-with-variable-for-script-name ) – TessellatingHeckler

答えて

0

変数$ itemが有効範囲外に設定されているため、この問題が発生しています。 (それが最善の説明であるかどうかはわかりません)Invoke-Commandのスクリプトブロックに引数を渡す必要があります。

Invoke-Command -ArgumentList $item {Restart-WebAppPool -Name $args[0]}

+0

ありがとうございます。それはうまくいった。 –

0

はそれほど単純ではない、but it is still pretty simple...

あなたは「ローカル値を渡す」セクションをチェックアウトすることをお勧めします。

+0

これも機能しました。より多くの情報のためのリンクに沿って渡していただきありがとうございます。 –

関連する問題