ところで、Scripting Guy! Windows PowerShell スクリプトで、イベント ログのバックアップします。

The Microsoft Scripting Guys

ホット! sweltering、付箋、息取ることの熱がまずイアソンと Kuala Lumpur、マレーシアで空港に着陸したときに気付きます。 カーブに到達しましたが、する前に、わかりやすい CAB ドライバーを樹幹と私たちにとって、扉を開いたまま、バッグ必要があります。 旅が brisk Kuala Lumpur 市区町村センター (KLCC) を引き起こしたパーム tree–lined 道路を通じて。 お入力、幹線道路、直ちにマイル各方向に離れた場所から KLCC をマークする Patronus 塔の glistening の先頭がわかりますでした。 Microsoft の従業員のグループに Microsoft 操作 Framework (MOF) クラスを教えるの町でした。

MOF クラスの強調表示がこれまでの最初の試行で右が絶対誰が、空港シミュレーション。 クラスの点の一部ですが (改善を処理します。 伝授クラス 20 回以上を誰最初の日に成功したことはありません。 一部のクラスしたことで行われた、シミュレーション、クラスの最後の日にします。 今まで。

最初の日の最後に、シミュレーションのラウンド 1 の時間がありました。 イアソンと命令が付けたお決定したら glances を交換します。 受講者が rapt 注意で書いたし、時計、通常大きい音の周囲で実行スクランブルをかけられた混乱は、の代わりに、ticking を起動するよう受講者サイレント モードで受け取った一緒、小さな huddle にします。 これは、声急速に約 5 分間の 1 受講者用ラップトップを開くし、ノートの作成を開始します。 calmly の周囲になっているされ、最初のラウンドで勝利しました。

方法でしょうか。 すべてのシナリオの重要な要素に、注意の指示にだけ使用します。 すべての不要な情報を無視され、問題を解決する新しいプロセスを作成します。 中心的な問題に焦点があるため、複雑な作業、ルールの空きと、エネルギーを手元の作業に専念すること。

過度に複雑な作業のルール生産性を低下することができます。 今日のスクリプトどれもがチェックアウト状況 1 顧客の直面順番がいくつかの時間を 1 日にさまざまなネットワーク サーバーからのイベント ログのバックアップと後いた位置中央記憶域の場所にコピーをテープにバックアップ支出が成長しました。 お過去の複雑な作業規則が後、カスタム スクリプトが正確に何が必要かを作成することをおできました。 このスクリプトは、その顧客を 10 時間、週、500 年時間労働管理のイベント ログを費やした、こと以前に保存します。

複雑な作業のルールからタイムアウトお場合、詳細の注意と IT サービスを提供するためには、タスクをいつ、エネルギーを集中おできます。 バックアップ、アーカイブ、およびネットワーク経由でイベント ログを消去を使用するスクリプトを見てみましょう。 図 1 は、全体の BackUpAndClearEventLogs.ps1 スクリプトを示しています。

図 1 BackUpAndClearEventLogs.ps1

Param(
       $LogsArchive = "c:\logarchive", 
       $List,
       $computers,
       [switch]$AD, 
       [switch]$Localhost,
       [switch]$clear,
       [switch]$Help
     )
Function Get-ADComputers
{
 $ds = New-Object DirectoryServices.DirectorySearcher
 $ds.Filter = "ObjectCategory=Computer"
 $ds.FindAll() | 
     ForEach-Object { $_.Properties['dnshostname']}
} #end Get-AdComputers

Function Test-ComputerConnection
{
 ForEach($Computer in $Computers)
 {
  $Result = Get-WmiObject -Class win32_pingstatus -Filter "address='$computer'"
  If($Result.Statuscode -eq 0)
   {
     if($computer.length -ge 1) 
        { 
         Write-Host "+ Processing $Computer"
         Get-BackUpFolder 
        }
   } #end if
   else { "Skipping $computer .. not accessible" }
 } #end Foreach
} #end Test-ComputerConnection



Function Get-BackUpFolder
{
 $Folder = "{1}-Logs-{0:MMddyymm}" -f [DateTime]::now,$computer
  New-Item "$LogsArchive\$folder" -type Directory -force  | out-Null
  If(!(Test-Path "\\$computer\c$\LogFolder\$folder"))
    {
      New-Item "\\$computer\c$\LogFolder\$folder" -type Directory -force | out-Null
    } #end if
 Backup-EventLogs($Folder)
} #end Get-BackUpFolder

Function Backup-EventLogs
{
 $Eventlogs = Get-WmiObject -Class Win32_NTEventLogFile -ComputerName $computer
 Foreach($log in $EventLogs)
        {
            $path = "\\{0}\c$\LogFolder\$folder\{1}.evt" -f $Computer,$log.LogFileName
            $ErrBackup = ($log.BackupEventLog($path)).ReturnValue
            if($clear)
               {
                if($ErrBackup -eq 0)
                  {
                   $errClear = ($log.ClearEventLog()).ReturnValue
                  } #end if
                else
                  { 
                    "Unable to clear event log because backup failed" 
                    "Backup Error was " + $ErrBackup
                  } #end else
               } #end if clear
            Copy-EventLogsToArchive -path $path -Folder $Folder
        } #end foreach log
} #end Backup-EventLogs

Function Copy-EventLogsToArchive($path, $folder)
{
 Copy-Item -path $path -dest "$LogsArchive\$folder" -force
} # end Copy-EventLogsToArchive

Function Get-HelpText
{
 $helpText= `
@"
 DESCRIPTION:
 NAME: BackUpAndClearEventLogs.ps1
 This script will backup, archive, and clear the event logs on 
 both local and remote computers. It will accept a computer name,
 query AD, or read a text file for the list of computers. 

 PARAMETERS: 
 -LogsArchive local or remote collection of all computers event logs
 -List path to a list of computer names to process
 -Computers one or more computer names typed in
 -AD switch that causes script to query AD for all computer accounts
 -Localhost switch that runs script against local computer only
 -Clear switch that causes script to empty the event log if the back succeeds
 -Help displays this help topic

 SYNTAX:
 BackUpAndClearEventLogs.ps1 -LocalHost 

 Backs up all event logs on local computer. Archives them to C:\logarchive.

 BackUpAndClearEventLogs.ps1 -AD -Clear

 Searches AD for all computers. Connects to these computers, and backs up all event 
 logs. Archives all event logs to C:\logarchive. It then clears all event logs 
 if the backup operation was successful. 

 BackUpAndClearEventLogs.ps1 -List C:\fso\ListOfComputers.txt

 Reads the ListOfComputers.txt file to obtain a list of computer. Connects to these 
 computers, and backs up all event logs. Archives all event logs to C:\logarchive. 

 BackUpAndClearEventLogs.ps1 -Computers "Berlin,Vista" -LogsArchive "\\berlin\C$\fso\Logs"

 Connects to a remote computers named Berlin and Vista, and backs up    all event 
 logs. Archives all event logs from all computers to the path c:\fso\Logs directory on 
   a remote computer named Berlin. 

BackUpAndClearEventLogs.ps1 -help

Prints the help topic for the script
"@ #end helpText
  $helpText
}

# *** Entry Point To Script ***

If($AD) { $Computers = Get-ADComputers; Test-ComputerConnection; exit }
If($List) { $Computers = Get-Content -path $list; Test-ComputerConnection; exit }
If($LocalHost) { $computers = $env:computerName; Test-ComputerConnection; exit }
If($Computers) 
  { 
   if($Computers.Contains(",")) {$Computers = $Computers.Split(",")} 
   Test-ComputerConnection; exit 
  }
If($help) { Get-HelpText; exit }
"Missing parameters" ; Get-HelpText

スクリプトは、BackUpAndClearEventLogs.ps1、パラメーター ステートメントを使用スクリプトは、いくつかのコマンド ライン パラメーターを作成する最初のようにします。

Param(
       $LogsArchive = "c:\logarchive", 
       $List,
       $Computers,
       [switch]$AD, 
       [switch]$Localhost,
       [switch]$Clear,
       [switch]$Help
     )

スクリプト、多くの柔軟性を提供するためにいくつかのパラメーターを使用おとします。 パラメーターを使用して、イベント ログのアーカイブの場所を定義を - LogsArchive です。 お設定の既定の場所、C:\ ドライブがによる - LogsArchive、コンピューティング環境のわかりやすい任意の場所を選択できます。

-リスト パラメーターが、テキスト ファイルを使用してスクリプトにコンピューターの一覧を指定できます。 このパラメーターは、コンピューター名を含むテキスト ファイルへの完全なパスを受け取る。 テキスト ファイルの構文は単純なそれぞれ個別の行で使用する各コンピューターの名前を配置するだけです。

-コンピューターのパラメーターでは、スクリプトを実行すると、コマンドラインからコンピューターの一覧を提供できます。 このパラメーターを使用して、するには、一連のコンマで区切られたコンピューター名を半角の二重引用符 () 内で配置します。 理想的には、少数のコンピューターだけを確認したい場合このパラメーターを使用します。

4 つのスイッチのパラメーターは次にします。 格好の 1 つはコンピューターの一覧については、Active Directory を照会するため、–AD と呼ばれるスイッチ パラメーターです。 多数のイベント ログ、ネットワーク上のすべてのコンピューターを確認しようとする場合は、このスイッチを使用する意味をが。 もちろん、大規模なネットワークでこのでしたかなり時間がかかります。 ローカル コンピューターに対してスクリプトを実行する場合を使用して、スクリプトをローカル コンピューターに対して実行するように指示する、- ローカルホスト スイッチです。 イベントのバックアップのログおよびはそれらを 1 か所にアーカイブ、手間も空、- 消去を使用して、イベント ログの内容を切り替えるパラメーター。 ヘルプ情報を取得するにを使用してスクリプトを実行 - ヘルプします。 おここでは、最初の関数にスクリプト。 Get ADComputers 関数は使用をすべての Active Directory でコンピューター アカウントの一覧を取得するクエリです。 この関数は入力パラメーター必要としません。 使用、関数が呼び出されるとして、新規オブジェクトのコマンドレットを Microsoft .NET Framework から DirectoryServices.DirectorySearcher クラスのインスタンスを作成します。 お渡さないでください情報、オブジェクトの新規作成 - コマンドレットにための既定コンストラクターを使用して、DirectoryServices.DirectorySearcher クラスが作成されます。 新しい DirectorySearcher クラスがここに示すとして、$ ds 変数に格納します。

Function Get-ADComputers
{
$ds = New-Object DirectoryServices.DirectorySearcher

DirectorySearcher クラスのインスタンスがある後、おを使用して"Filter/フィルター"プロパティの取得されるアイテム数を減らす検索フィルターを作成します。 LDAP 検索フィルターは記載しています" 検索フィルターの構文." 必要な属性は ObjectCategory と呼ばれ「コンピューター」の値を探していること 私たちが、フィルターを作成、お DirectorySearcher オブジェクトから FindAll メソッドを使用します。

 $ds.Filter = "ObjectCategory=Computer"
$ds.FindAll() | 

FindAll メソッドからの結果は、FindAll によって返される DirectoryEntry オブジェクトのコレクションを反復処理に使用される、ForEach オブジェクト コマンドレットを pipelined します。 、中かっこで表す、スクリプト ブロック内 _ の自動変数が $ を使用して、パイプラインに現在の項目を参照します。 お DirectoryEntry オブジェクトのプロパティにアクセスし、dnshostname を返します。

     ForEach-Object {$_.Properties['dnshostname']}
} #end Get-ADComputers

今すぐ、コンピューターがネットワークと実行テスト-ComputerConnection 関数を作成お説明します。 タイムアウトの問題を防ぐためにし、スクリプトを効率化します。 関数の名前を指定し、してスクリプト ブロックを開きますお、関数のキーワードを使用して開始。

Function Test-ComputerConnection
{

次にいたします $ コンピューター変数に保存するコンピューターのコレクションを参照する必要があります、列挙子として、$ コンピューター変数で ForEach ステートメントを使用します。 おし、左中かっこを使用してスクリプト ブロックを開きます。

 ForEach($Computer in $Computers)
{

WMI クラスの Win32_PingStatus を使用して、リモート コンピューターを ping する必要があります。 これを行うには、お Get-WmiObject コマンドレットを使用して Win32_PingStatus クラスを指定して、フィルターを作成検査かどうか $ コンピューター変数に格納された値の値を表示するアドレス プロパティを検査します。 おこの WMI クエリの結果に保管変数 $ 結果を名前付き、次に示すようにします。

  $Result = Get-WmiObject -Class Win32_PingStatus -Filter "address='$computer'"

WMI クエリから返されるステータス コードを評価しました。 ステータス コードが 0 に等しい場合は、エラーが発生していないと、コンピューターが稼動しています。

  If($Result.Statuscode -eq 0)
   {

いくつかの奇妙なため、コンピューターに返されます評価するファントム コンピューターとして存在をでした、名前をありません。 ファントム コンピューターの削除をするには、コンピュータ名が少なくとも 1 つの文字長いことを確認コードの行を追加します。

     if($computer.length -ge 1) 
        { 

次にお、コンピューターを処理するはことを示すステータス メッセージを表示してフィードバックのユーザーに提供します。 書き込みホスト コマンドレットを使用してこのフィードバックをします。

         Write-Host "+t Processing $Computer"

バックアップに使用するフォルダーをクリック取得 BackupFolder 関数を呼び出すおようになりました。

         Get-BackUpFolder 
        }
   } #end if

コンピューターをアクセスできない場合、おしないにアクセスできるので、イベント ログをバックアップしようとしています内のポイントはありません。 表示、コンピューターをスキップして、関数の終了ことを示すステータス メッセージ。

   else { "Skipping $computer .. not accessible" }
 } #end Foreach
} #end Test-ComputerConnection

評価した後、コンピューターのアクセシビリティは、時取得 BackupFolder 関数を作成するのには。

Function Get-BackupFolder
{

次のコード行は、多少 odd-looking および少しわかりにくいためです。

$Folder = "{1}-Logs-{0:MMddyymm}" -f [DateTime]::now,$computer

形式演算子は、使用している (-f) をいくつか文字列をフォルダー名に使用する値の代入を実行します。 文字列が、1 組のかっこ、破線、および一連の文字の後に 0 を囲む中かっこの別のペアで囲まれた単語ログ内の数字 1 含まれています。

一度に 1 つここがみましょう。 –f 演算子を文字列に含まれる値の置換を実行します。 開始、配列と同様の最初の要素値は 0、1、2 番目です。 –f 演算子の右側にある項目は、左側にある適切なスロットに配置された代替値です。

メイン スクリプトに取得、前に、スクリプトで置換が行われる方法を明確に例を検討する少しがみましょう。 {0} の部分に 1 つの単語と、次のコードに {1} 部分の 2 つの単語を置き換えるお方法を確認します。

PS C:\Users\edwilson> $test = "{0}-first-{1}-second" -f "one","two"
PS C:\Users\edwilson> $test
one-first-two-second

お可能性がありますする必要がありますが並べ替えコードの最初の要素は、最初の位置になるようにします。 代わりに、私たちが書き込まれて、2 番目の要素が最初の位置、最初の要素が 2 番目の位置であるようにします。 移動した場合少し、コードの行の周りのものが検索していたよう。

PS C:\Users\edwilson> $computer = "localhost"
PS C:\Users\edwilson> $Folder = "{0}-Logs-{1:MMddyymm}" -f $computer, [DateTime]::now
PS C:\Users\edwilson> $Folder
localhost-Logs-04070938

{1:MMddyymm}、上記のコマンドでの使用を現在の日付と時刻を指定するがします。 長すぎると、フォルダー名の許可されていない文字が含まれてため、ここで表示される日付と時刻オブジェクトの通常の表示をしません。 日付と時刻オブジェクトの既定の表示は 2009 年 4 月 7 日火曜日 6:45:37 PM です。

スクリプトで、コロンに続く文字パターンは日付と時刻の値が表示される方法を制御を使用します。 我々 の場合、月が続きます日、年の分。 これらの日付と時刻書式指定文字列に記載されています カスタム日時書式指定文字列. Microsoft、スクリプト センターでの最近、記事で説明がされた" 方法はする [イベント ログのサイズを確認および [バックアップし、保存がフル半分より詳細にしますか。"

次におイベント ログ アーカイブ フォルダーを作成します。 フォルダーを作成するには、お項目の新規作成コマンドレットを使用して型を指定のディレクトリとしてします。 変数、$ LogsArchive と、アーカイブへのパスを作成するには、$ フォルダー変数に格納おパターン使用します。 使用して、- force パラメーターが必要な場合は、全体のパスの作成を有効にします。 結果をパイプラインおされないためにこのコマンドからのフィードバック関心のある、Out-Null コマンドレット、ここに表示されています。

New-Item "$LogsArchive\$folder" -type Directory -force | Out-Null

コンピューターのログ フォルダーが存在するかどうかを確認する必要もあります。 これするには、テスト パス コマンドレットを使用してください。

  If(!(Test-Path "\\$computer\c$\LogFolder\$folder"))
    {

テスト パス コマンドレットは、$true または $ False のブール型 (Boolean) の値を返します。 それが求める"はログ フォルダーがありますか? という NOT の配置、テスト パス コマンドレットの前に演算子 (!) が必要なだけ、フォルダーが存在しない場合を示します。

リモート コンピューター上で、ログ フォルダーが存在しない場合、項目の新規作成 - コマンドレット作成を使用してください。 LogFolder、ハード コーディングされた値があるが、これを変更することができます。 使用して、前の項目の新規作成コマンドレットでパス全体を作成し、結果をパイプラインには、- force パラメーター、Out-Null コマンドレット。

      New-Item "\\$computer\c$\LogFolder\$folder" -type Directory -force | out-Null
    } #end if

ここで、実際のイベント ログのバックアップを実行するバックアップ-EventLogs 関数を呼び出すをします。 関数を呼び出すときに、$ フォルダー変数に格納パスを渡してください。

 Backup-EventLogs($folder)
} #end Get-BackUpFolder

次に、バックアップ-EventLogs 関数を作成します。

Function Backup-EventLogs
{

Win32_NTEventLogFile WMI クラスを使用お実際のバックアップを実行します。 これを行うには、Get-WmiObject コマンドレットを呼び出すおし Win32_NTEventLogFile できるだけでなく、$ コンピューター変数に含まれるコンピュータ名のクラス名を付けます。 おは、結果の WMI オブジェクト、$ Eventlogs 変数に格納します。

$Eventlogs = Get-WmiObject -Class Win32_NTEventLogFile -ComputerName $computer

ジェネリック、フィルターが適用されていない WMI クエリを実行してコンピューター上の各イベント ログを表すイベント ログ オブジェクトを返すこと。 これらは 図 2 に示す従来のイベント ログです。

これらのイベント ログを使用するにお WMI オブジェクトのコレクションをウォークするための ForEach ステートメントを使用する必要があります。 お、変数 $ ログとして使用して、列挙子のコレクションをたどるおまま我々 の場所。

fig02.gif

図 2 Win32_NTEventLogFile によってクラシック イベント ログの取得

 ForEach($log in $EventLogs)
        {

ここでパスを作成する必要があります。 一度、いくつかのパターンの置換を実行するのには、形式演算子お使用します。 {0} は、コンピュータ名、event logs に使用されるパス内のプレースホルダーです。 {1} は、イベント ログのバックアップ時に使用されるログ ファイル名を保持に使用されるプレースホルダーです。

            $path = "\\{0}\c$\LogFolder\$folder\{1}.evt" -f $Computer,$log.LogFileName

Win32_NTEventLogFile の WMI クラスから、BackupEventLog メソッドを呼び出すおようになりました。 私たちは、BackupEventLog メソッドに、パスを渡して、メソッド呼び出しからの戻り値の取得します。 ここで示したとおり、$ ErrBackup 変数に戻り値を格納います。

            $ErrBackup = ($log.BackupEventLog($path)).ReturnValue

–clear スイッチで、スクリプトが実行された場合、$ クリア変数が存在するし、場合は、私たちに必要なイベント ログを消去します。 この場合は、したがって、使用してステートメントの $ オフ変数が存在するかどうかを。

            if($clear)
               {

お空のイベント ログ、前にごに、イベント ログが正常にバックアップすることを確認します。 これを行うは、$ ErrBackup 変数に格納される値を検査します。 0 に等しい場合は、バックアップ操作中にエラーがない、イベント ログを空に続行しても安全がそのお把握します。

                if($ErrBackup -eq 0)
                  {

おは、Win32_NTEventLogFile の WMI クラスから ClearEventLog メソッドを呼び出すし、メソッド呼び出しから、戻り値を取得します。 次に示すように、$ errClear 変数にお客様からには、戻り値を保存します。

                   $errClear = ($log.ClearEventLog()).ReturnValue
                  } #end if

$ ErrBackup 変数の値を 0 にできない場合は、お操作を行いましていないオフ アウト、イベント ログ。 代わりに、バックアップでは、失敗したために、イベント ログを消去できませんでしたを示すステータス メッセージ表示されます。 提供するには、追加のトラブルシューティングについては、紹介、バックアップ操作から取得した状態コード。

                else
                  { 
                    "Unable to clear event log because backup failed" 
                    "Backup Error was " + $ErrBackup
                  } #end else
               } #end if clear

次に、イベント ログをアーカイブ場所にコピーおとします。 これを行うには、おコピー-EventLogsToArchive 関数を呼び出すし、パス、イベント ログをフォルダー宛先用に設定します。

            Copy-EventLogsToArchive -path $path -Folder $Folder
        } #end foreach log
} #end Backup-EventLogs

コピー-EventLogsToArchive では、アイテムのコピー コマンドレットを使用して、イベント ログをアーカイブ場所にコピーをします。 もう一度使用して、- force パラメーターが存在しない場合フォルダーを作成します。

Function Copy-EventLogsToArchive($path, $folder)
{
 Copy-Item -path $path -dest "$LogsArchive\$folder" -force
} # end Copy-EventLogsToArchive

ここで、スクリプトの一部のヘルプ テキストを作成する必要があります。 ヘルプ情報を単一の変数に格納を Get HelpText 関数を作成これを行うには、: $ helpText。 ヘルプ テキストは、ここでの文字列として私たちで引用符をエスケープに関するもなく、画面に表示することとようのテキストに書式を設定できる書き込まれます。 これにより、 図 3 のような大きな文字列を入力するには、はるか簡単ことができます。

図 3 取得 HelpText 関数

Function Get-HelpText
{ 
 $helpText= `
@"
 DESCRIPTION:
 NAME: BackUpAndClearEventLogs.ps1
 This script will backup, archive, and clear the event logs on 
 both local and remote computers. It will accept a computer name,
 query AD, or read a text file for the list of computers. 
 PARAMETERS: 
 -LogsArchive local or remote collection of all computers event logs
 -List path to a list of computer names to process
 -Computers one or more computer names typed in
 -AD switch that causes script to query AD for all computer accounts
 -Localhost switch that runs script against local computer only
 -Clear switch that causes script to empty the event log if the back succeeds
 -Help displays this help topic
 SYNTAX:
 BackUpAndClearEventLogs.ps1 -LocalHost 
Backs up all event logs on local computer. Archives them to C:\logarchive.
 BackUpAndClearEventLogs.ps1 -AD -Clear
 Searches AD for all computers. Connects to these computers, and backs up all event 
 logs. Archives all event logs to C:\logarchive. It then clears all event logs if the
 backup operation was successful. 
 BackUpAndClearEventLogs.ps1 -List C:\fso\ListOfComputers.txt
 Reads the ListOfComputers.txt file to obtain a list of computer. Connects to these 
 computers, and backs up all event logs. Archives all event logs to C:\logarchive. 
 BackUpAndClearEventLogs.ps1 -Computers "Berlin,Vista" -LogsArchive "\\berlin\C$\fso\Logs"
 Connects to a remote computers named Berlin and Vista, and backs up all event 
 logs. Archives all event logs from all computers to the path c:\fso\Logs directory on 
 a remote computer named Berlin. 
 BackUpAndClearEventLogs.ps1 -help
 Prints the help topic for the script
 "@ #end helpText

ヘルプ テキストを表示するには、お名前によって、変数に呼び出します。

  $helpText
}

次に、ここに表示されているコマンド ライン入力お解析します。

If($AD) { $Computers = Get-ADComputers; Test-ComputerConnection; exit }
If($List) { $Computers = Get-Content -path $list; Test-ComputerConnection; exit }
If($LocalHost) { $computers = $env:computerName; Test-ComputerConnection; exit }

場合は、$ AD 変数が存在は、AD と、スクリプトを実行するがスイッチとしたがって、$ コンピューター変数を設定、Get ADComputers </a0> 関数から取得した情報を使用します。 次は、イベント ログをコンピューターがオンライン、戻るかどうかを決定する、テスト ComputerConnection 関数を呼び出しています。 スクリプトを終了します。 $ リスト変数が存在場合、取得コンテンツ コマンドレットをテキスト ファイルの読み取りし、$ コンピューター変数を設定を使用してください。 おテスト ComputerConnection 関数を呼び出すし、スクリプトを終了します。 $ ローカルホスト変数が存在場合、値、コンピューター名の環境変数から直接読み取ることによってコンピューター変数 $ お設定します。 おテスト ComputerConnection 関数を呼び出すし、スクリプトを終了します。

$ コンピューター変数が存在する場合、スクリプトが実行すること、コマンドラインからコンピューター名が指定することを意味します。 これらのコンピューター名を配列に分割する必要があります。 これを行うには、文字列オブジェクトの分割メソッドを使用しました。

If($Computers) 
  { 
   if($Computers.Contains(",")) {$Computers = $Computers.Split(",")} 
   Test-ComputerConnection; exit 
  }

ヘルプ スイッチで、スクリプトが実行された場合、お取得 HelpText 関数を呼び出す、表示、ヘルプ、およびスクリプトを終了します。

If($help) { Get-HelpText; exit }

パラメーターが存在しない場合状態おパラメーター不足している場合をし、Get-Help を呼び出す関数をテストするメッセージを表示します。

"Missing parameters" ; Get-HelpText

BackupAndClearEventLogs.ps1 スクリプトを適合させる簡単にため、ネットワーク上のニーズを提供することができます。 たとえば、Active Directory クエリを変更できますから特定の組織単位、サーバーのみが返されますやさらに、処理されるコンピューターを除外の追加、WMI クエリを追加することができます。 スクリプトを楽しむし、使用する勤務先、と思います。 我々 と、スクリプト作成者のコミュニティにアクセスします スクリプト センター場所で、毎日 Hey、Scripting Guy キャッチ! アーティクル。

Ed 匡 、既知のスクリプト専門家は、8 つの Windows PowerShell Scripting Guide Microsoft Press (2008) を含む、書籍や Microsoft Windows PowerShell Step by Step マイクロソフト プレスの作成者は (2007) です。 Ed は 20 を超える業界資格、マイクロソフト認定システム エンジニア (MCSE) および認定情報システム セキュリティ プロフェッショナル (CISSP) などを保持します。 予備時間、彼は活用 woodworking、underwater の写真、およびスキューバ ダイビング。 紅茶.

葛城さんの Liebendorfer は wordsmith および longtime のマイクロソフトの Web エディターです。 葛城さんもできない信じる毎日単語を使用する彼に支払われるジョブが。 自分のお気に入りの 1 つ彼合わせる必要がありますので irreverent ユーモアがここでは右側です。 彼は自分最大の成果の壮大な彼娘は生活と見なします。