私は次のようなpowershellプログラムを構築しようとしています:
- リモートサーバーに接続する
- アクティブなサーバー上のアクティブな IIS アプリケーション プールの数を表示します
- 選択(1、2、3、4、....nなど)に基づいて、アプリプールをリセットします
ヒントを教えてください。
私は次のようなpowershellプログラムを構築しようとしています:
ヒントを教えてください。
これを試してください:
[Reflection.Assembly]::LoadWithPartialName('Microsoft.Web.Administration')
$sm = [Microsoft.Web.Administration.ServerManager]::OpenRemote('server1')
$sm.ApplicationPools['AppPoolName'].Recycle()
すでに与えられた答えに基づいて、次のことを試してください。PowerShell リモート処理、具体的にはInvoke-Commandを使用するため、それに慣れる必要があります。
[cmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="High")]
param
(
[parameter(Mandatory=$true,ValueFromPipeline=$true)]
[string]$ComputerName,
[parameter(Mandatory=$false)]
[System.Management.Automation.PSCredential]$Credential
)
begin
{
if (!($Credential))
{
# Prompt for credentials if not passed in
$Credential = get-credential
}
$scriptBlock = {
Import-Module WebAdministration
# Get all running app pools
$applicationPools = Get-ChildItem IIS:\AppPools | ? {$_.state -eq "Started"}
$i = 0
# Display a basic menu
Write-Host "`nApplication Pools`n"
$applicationPools | % {
"[{0}]`t{1}" -f $i, $($applicationPools[$i].Name)
$i++
}
# Get their choice
$response = Read-Host -Prompt "`nSelect Application Pool to recycle"
# Grab the associated object, which will be null
# if an out of range choice was entered
$appPool = $applicationPools[$response]
if ($appPool)
{
"Recycling '{0}'" -f $appPool.name
$appPool.recycle()
}
}
}
process
{
Invoke-Command -ComputerName $computerName -Credential $credential -ScriptBlock $scriptBlock
}
私は既存のコードを手伝うことはできませんが、いくつかのリンク
ここでリモート PowerShell セッションを確認してください
Windows PowerShellの Webサーバー (IIS) 管理コマンドレット、特にGet-WebApplicationとGet-WebAppPoolState を確認してください。
リセットが停止を意味する場合は、Stop-WebAppPoolを確認できます。