2011-01-07 164 views
9

IIS Powershell管理コンソールを使用して1つのコマンドでWebサイトホスティングを作成できるように、powershellスクリプトを作成しています。Powershellコマンドを使用してIISログ設定を設定する

私は私も欠けているパズルの一片からデフォルトのログディレクトリを変更する方法である

...私はIISサイトを作成して、ドメイン名などのバインディングを追加する必要があるコマンドを持っています%SystemDrive%\ inetpub \ logs \ LogFilesをサーバーのブートドライブにない自分のフォルダにコピーします。

広範な検索した後、私は以下の擬似PowerShellの

New-ItemProperty IIS:\Sites\MyNewSite -name logging -value @{format='W3C';directory='d:\sites\site\logs';encoding=UTF-8} 

の線に沿ってコマンドをしてください見つけることが期待されるが、あなたはIIS PowerShellの管理コンソールで

をログフォルダを変更する方法の例を私に示すことができました事前に

おかげ

答えて

1
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") 
$iis = new-object Microsoft.Web.Administration.ServerManager 
$web = $iis.Sites["test"] 
#set new logpath, must be existing 
$web.LogFile.Directory = "F:\Logfiles\" 
$iis.CommitChanges() 
13
Import-Module WebAdministration 
Set-WebConfigurationProperty "/system.applicationHost/sites/siteDefaults" -name logfile.directory -value $logdir 
+0

ありがとうございます。これは、デフォルトの場所を変更するためにはうまくいきました。私は私の質問ではっきりしていないが、各サイトのための個々のフォルダを持っています。あなたのコードは、私がこのフォーラムの投稿http://forums.iis.net/t/1174319.aspx – Webmonger

+0

の答えを見つけるのを助けました。これをあなたのスクリプトの他のIIS:driveアクティビティと共に使用しているなら。 IIS:ドライブ上の現在のフォルダがルートであることを確認します。これは "cd IIS:\"で行うことができます。たとえば、IIS:\ SslBindingsの場合は、「Set-WebConfigurationProperty:パスIISのオブジェクトに対して設定が定義されていません:\ SslBindings」というエラーが発生します。 –

4

これは、ワットとして働きますell、WebAdministrationモジュールを使用して

Import-Module WebAdministration 
$site = gi IIS:\Sites\MyNewSite 
$site.Logging.format='W3C' 
$site.Logging.directory='d:\sites\site\logs' 
$site.Logging.encoding=UTF-8 
$site | set-item 
+0

これは、古いIISまたはWebAdministrationのバージョンで機能している可能性があります。しかし、現在、使用するサイトのプロパティはlogFileです。例: '' '$ site.logFile。logFormat = 'W3C'''' –

5

個々のWebサイトのlogFile設定を変更するには、元の投稿はほぼ正確でした。代わりに新しい-ItemPropertyの、サーバ全体のデフォルト設定を変更するために...そうのように、

Set-ItemProperty "IIS:\Sites\$SiteName" -name logFile -value @{directory=$LogPath} 

を設定-ItemPropertyを使用し、Andy Schneider's answerを参照してください。

利用可能なオプションの詳細については、this IIS.net articleを参照してください。

+0

小さな世界... [隣のタブのこの他の議論について] @ Nathan-Hartleyのアバターに気付きました(http://powershell.org/wp/forums/topic/iis -log-file-maintenance /)を実行します。 DSCは、このようなことのための新しいアプローチのように聞こえます。 – Nathan

7

このスレッドからの回答をテストしながら、IISマネージャーとPowerShellでオプションを切り替えると、私は私に隠された何かを見つけました。 IISマネージャーで、構成エディターを選択して変更を加えると、IISマネージャーはC#、JavaScript、AppCmd.exe、およびPowerShellの変更用スクリプトを生成して表示できます。 Generate Scriptオプションをクリックするだけです。

[Auto Generated Scripts for IIS configuration changes]

+0

Powershellタブを取得するにはIIS 8.x以上が必要ですが、これはすばらしいことです。 – dragon788

0

あなたは、単一のサーバ上で複数のサイトをホストし、同じログファイルにすべてのログにそれらをしたい場合は、プロセスはかなり異なっています。 herehereという手がかりを見つけるためにいくつかの掘り出し物がありましたので、私はこの必要性を持つ他の誰かのために説明を残しておくことにしました。

次の2つのステートメントは、すべてのWebサイトのログをe:\ log \ w3svcというフォルダに結合します。

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/log' -name CentralLogFileMode -Value 'CentralW3C' 
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter 'system.applicationHost/log' -name centralW3CLogFile.directory -value 'e:\log' 
関連する問題