私はこのスクリプトをどのようにループできるかについて、PowerShellの経験を積んだ人ができるだけ親切に助言してくれることを願っています。残念ながら、私たちはPowerShellスクリプトのループをまだ熟知しておらず、これを実行する最善の方法/方法についていくつかのアドバイスを探しています。指定された日付から始まる指定されたフォルダおよび/またはフォルダ内に新しいファイルが作成され、削除されるファイルをリストした.csvファイルが含まれている場合、従業員に電子メールアラートを送信するためにスクリプトを使用します。アラートの送信後に.csvファイルを生成する必要はありません。今はコードを何度もコピーして貼り付け、新しいフォルダが追加されたときにコードの一部を変更しています。しかし、私たちの懸念は、結局のところ、週/月/年が経過するとフォルダが追加され、新しいフォルダを追加する必要があるため、このファイルはページ長になります。PowerShellスクリプトループ - 作成された新しいファイルの作成
私たちがスクリプトに対して行う唯一の変更は、ネットワークドライブを見るためのフォルダパス、作成時間、およびそれが行われる受信者です。
これを達成するための最善の方法についてのアドバイスは、このすべてまたはいずれかを達成することは非常に感謝しています。
ありがとうございます!
$arr = @()
$file = "\\DesignatedNetworkDrive\NewFileFinderReport.csv"
$mesg = "Please see the attached file for a list of files that were created after July 1, 2016."
# Folder: Corporateshare
gci \\DesignatedNetworkDrive\,\\DesignatedNetworkDrive\Corporateshare\ | Where-Object { $_.CreationTime -ge "07/02/2016" } | % {
$obj = New-Object PSObject
$obj | Add-Member NoteProperty FullName $_.FullName
$obj | Add-Member NoteProperty Length $_.Length
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
$obj | Add-Member NoteProperty LastAccessTime $_.LastAccessTime
$obj | Add-Member NoteProperty LastWriteTime $_.LastWriteTime
$obj | Add-Member NoteProperty CreationTime $_.CreationTime
$arr += $obj
}
$arr | Export-CSV -notypeinformation "$file"
if ($(get-item -path "$file").length -gt 0) {send-mailmessage -from "[email protected]" -to "[email protected]","[email protected]" -subject "New File Found in Corporateshare" -body "$mesg" -Attachments "$file" -smtpServer mail.somecompany.com}
Remove-Item $file
# Folder: Administration
$arr = @()
$file = "\\DesignatedNetworkDrive\NewFileFinderReport.csv"
$mesg = "Please see the attached file for a list of files that were created after May 3, 2016."
gci \\DesignatedNetworkDrive\Administration\,\\DesignatedNetworkDrive\Administration\_Private\ | Where-Object { $_.CreationTime -ge "05/04/2016" } | % {
$obj = New-Object PSObject
$obj | Add-Member NoteProperty FullName $_.FullName
$obj | Add-Member NoteProperty Length $_.Length
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
$obj | Add-Member NoteProperty LastAccessTime $_.LastAccessTime
$obj | Add-Member NoteProperty LastWriteTime $_.LastWriteTime
$obj | Add-Member NoteProperty CreationTime $_.CreationTime
$arr += $obj
}
$arr | Export-CSV -notypeinformation "$file"
if ($(get-item -path "$file").length -gt 0) {send-mailmessage -from "[email protected]","[email protected]" -body "$mesg" -Attachments "$file" -smtpServer mail.somecompany.com}
Remove-Item $file
# Folder: Procurement
$arr = @()
$file = "\\DesignatedNetworkDrive\NewFileFinderReport.csv"
$mesg = "Please see the attached file for a list of files that were created after May 24, 2016."
gci \\DesignatedNetworkDrive\Procurement\ | Where-Object { $_.CreationTime -ge "05/25/2016" } | % {
$obj = New-Object PSObject
$obj | Add-Member NoteProperty FullName $_.FullName
$obj | Add-Member NoteProperty Length $_.Length
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
$obj | Add-Member NoteProperty LastAccessTime $_.LastAccessTime
$obj | Add-Member NoteProperty LastWriteTime $_.LastWriteTime
$obj | Add-Member NoteProperty CreationTime $_.CreationTime
$arr += $obj
}
$arr | Export-CSV -notypeinformation "$file"
if ($(get-item -path "$file").length -gt 0) {send-mailmessage -from "[email protected]","j[email protected]" -subject "New File Found in Procurement" -body "$mesg" -Attachments "$file" -smtpServer mail.somecompany.com}
Remove-Item $file
はそれから情報を引き出す持っているだろう。最終関数が得られ
は、より多くのように見えますImport-CSVを使用してconfigファイルを編集し、ForEachでループします。それをうまくコーディングするには、それを関数にも分割するべきでしょう - 例についてのMathiasの答えを参照してください。 – Larkeith