我的脚本正在备份多个SQL Server数据库,并且我将其将每个数据库和文件名输出到日志文件。我不确定如何以列格式对齐它们。

Function LogWrite
{
  Param ([string]$logstring)
  Add-content $Logfile -value $logstring
}


$server = new-object ("Microsoft.SQLServer.Management.Smo.Server")  "(Local)\sqlexpress"
$databases = $server.databases

$array = @($db1,$db2,$db3,$db4,$db5,$db6,$db7,$db8,$db9,$db10,$db11)
foreach ($element in $array)
{
  foreach ($db in $databases)
  {
    if($db.Name -like $element)
    {
      $dbname = $db.Name
      $dateTime = get-date -format yyyy_MM_dd
      $fullBackupFilePath = ($backupDirectory + "\" + $dbname + "_FULL_" + $dateTime + ".bak")

      Backup-SQLDatabase -ServerInstance $sqlServer -Database $dbname -BackupFile $fullBackupFilePath

      LogWrite "$dbname   -    $backupDirectory"
    }
  }
}

这是当前的样子:

Databases Succesfully Backed Up:

Aqm       C:\Mappa_Backup\FULL
Atlas       C:\Mappa_Backup\FULL
halive       C:\Mappa_Backup\FULL
hatrafficinfo       C:\Mappa_Backup\FULL
jtr       C:\Mappa_Backup\FULL
jtr2       C:\Mappa_Backup\FULL
mappa       C:\Mappa_Backup\FULL
mtf       C:\Mappa_Backup\FULL
PartOneClaims       C:\Mappa_Backup\FULL
ptfeedback       C:\Mappa_Backup\FULL


The following files were deleted as they were older than 14 days:

Aqm_FULL_2015_08_19.bak
Atlas_FULL_2015_08_19.bak
halive_FULL_2015_08_19.bak
hatrafficinfo_FULL_2015_08_19.bak
jtr2_FULL_2015_08_19.bak
jtr_FULL_2015_08_19.bak
mappa_FULL_2015_08_19.bak
mtf_FULL_2015_08_19.bak
PartOneClaims_FULL_2015_08_19.bak
ptfeedback_FULL_2015_08_19.bak

最佳答案

另一个简单的选择是使用.NET格式指令,例如:

LogWrite ("{0,20}   -    {1,-60}" -f $dbname,$backupDirectory)

格式说明符为{<placeholder-number>,[- for left-align]<field-width>}

关于powershell - 格式日志输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32099566/

10-13 07:46
查看更多