PowerShellスクリプトを使用して、現在実行中の毎日のプロセスを、既知のプロセスを除いた電子メールで報告しました。Whereステートメントで変数を使用する
これで、リストに追加された新しいプロセスでこれを簡単に更新できます。以下は
現在のスクリプトの例です:$pros
の
$Yday = (Get-Date).AddDays(-1)
$pros = Get-Process | Where {($_.StartTime -GT $Yday -and $_.ProcessName -notmatch "chrome|outlook|powershell")}
出力は、プロセスの結果が含まれます、最後の24時間のマイナスプロセスクロム、見通しおよびPowerShellで始まりました。
私が達成したいと思います:
「Known_Processes.txt」に使用されるテキストの同じ文字列を作成するには、次のスクリプトを使用して、その後
chrome outlook powershell
のようなプロセスのリストを含むと呼ばれるファイルwhereステートメントのフィルタとして渡します。 「|見通し| PowerShellのクローム」
$Yday = (Get-Date).AddDays(-1)
[string]$Known_Processes = (Get-Content -Path C:\PS\known_processes.txt | Out-String).Replace("`n", "|").TrimEnd("|")
$pros = Get-Process | Where {($_.StartTime -GT $Yday -and $_.ProcessName -notmatch $Known_Processes)}
これの出力は、私は、変数$known_processes
が同じ値でありながらも、フィルタリングしようとしていますプロセスを含め、すべてのプロセスが表示されます。
私は検索しようとしましたが、これを動作させるための唯一の方法は正規表現を使用することです。私がこれを行うことができる間に、where
ステートメントを更新しようとすると、PowerShellの知識を持たない他の管理者が間違いを犯す可能性があります。 where
として、リスト内のテキストファイルにプロセス名を挿入する方が簡単です。
ああ、私の悪い、取得プロセスは、配列を受け入れる、これは間違いなく良いです – 4c74356b41
こんにちはショーン 私はこれが出力として知られているプロセスをフィルタリングしているので、これと反対のことをしていると思います。どこでget-processの出力から既知のプロセスを差し引いて出力したいのですか? ありがとう – CraftyB
@CraftyB確かに。 –