1

まず、これが私の最初の質問です。既存のトピックを閲覧するためによくここに来ますが、今は自分の問題に悩まされています。そして、私は今役立つリソースを見つけられませんでした. 私の最大の懸念は、Powershell で動作しないことです... 現時点では、多くの時間を節約するために小さな Powershell ツールを入手しようとしています。cw-sysinfo を知らない方のために説明すると、これはホスト システムの情報 (ハードウェア ID、プロダクト キーなど) を収集し、*.txt ファイルを生成するツールです。プロジェクトに 20 台、30 台、または 80 台のサーバーがある場合、すべてのファイルをブラウズして必要な行を探し、それらを *.csv ファイルにまとめるだけでも膨大な時間がかかります。

私が取り組んでいるのは、ツールの基本に似ており、特定のパスにあるすべての *.txt を参照し、キーワードをチェックします。そして、次のように、本当に必要な単語の前に単語を使用できるという問題があります。

    Operating System:         Windows XP
    Product Type:             Professional
    Service Pack:             Service Pack 3
    ...

Powershell に "Product Type:" 行を検索して、代わりに次の "Professional" を選択するように指示する方法がわかりません。後でキーまたはシリアル番号を使用すると、同じ問題が発生します。そのため、「標準」または「プロフェッショナル」を参照できません。

キーワード ($controls) を追加のファイルに配置しました。このファイルは、プロジェクト フォルダーを添付でき、毎回 Powershell で編集する必要はありません。コードは次のようになります。

    Function getStringMatch 
    { 
      # Loop through the project directory
      Foreach ($file In $files) 
      { 
        # Check all keywords
        ForEach ($control In $controls) 
        { 
          $result = Get-Content $file.FullName | Select-String $control -quiet -casesensitive 
          If ($result -eq $True) 
          { 

            $match = $file.FullName 
            # Write the filename according to the entry
            "Found :  $control  in:  $match" | Out-File $output -Append 
          } 
        } 
      } 
    } 

    getStringMatch
4

2 に答える 2