複数の sql ファイルを含むフォルダーがあります。特定のファイルでエラーをキャッチし、そのファイル名をログに記録する方法。
次のスクリプトを使用して sqlcmd を実行しています。
$ServerName=$args[0]
$DatabaseName=$args[1]
$UserName=$args[2]
$Passcode=$args[3]
$FolderPath=$args[4]
$errorpath=$args[5]
foreach ($f in Get-ChildItem -path $FolderPath -Filter *.sql | sort-object) {
$fileCurrent = $f.fullname
try {
invoke-sqlcmd -ServerInstance $ServerName -Database $DatabaseName -U $UserName -P $Passcode -InputFile $f.fullname
}
catch {
$_ | Out-File $errorpath -Append
}
}
そのフォルダーには 100 個のファイルがあり、2 つのファイルでエラーが発生しています。エラーとファイル名をログに記録します。