まず、これが私の最初の質問です。既存のトピックを閲覧するためによくここに来ますが、今は自分の問題に悩まされています。そして、私は今役立つリソースを見つけられませんでした. 私の最大の懸念は、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