Get-Migrations的输出升序排序?

时间:2017-04-14 14:40:15

标签: visual-studio entity-framework powershell entity-framework-6

默认情况下,Get-Migrations命令在Visual Studio包管理器控制台中运行时,将按降序返回已应用于目标数据库的Entity Framework迁移列表。也就是说,列表被排序为首先进行最近的迁移。

有没有办法让Get-Migrations按升序返回迁移列表,即首先返回最早的迁移?

到目前为止我已尝试过:

  • 将输出传送到Sort-Object cmdlet,例如Get-Migrations [my params] | Sort-Object -Property Name(我不确定要指定的属性名称,或者这是否适用?)。所有这些尝试都以静默方式失败(未显示任何错误消息,Get-Migrations输出中没有任何更改)。

  • 查看了有关Get-Migrations(Get-Help Get-Migrations)的Powershell帮助,并在Web上搜索了Get-Migrations本身是否有一个控制输出排序顺序的参数。无法找到。

我目前获得的Get-Migrations命令的输出:

PM> Get-Migrations [my arguments...]
Retrieving migrations that have been applied to the target database.
201704121534436_SomeMigration999
201703291334212_SomeMigration998
[lots and lots more records here that are a pain to scroll through...]
201410110448547_InitializeTables
201410110018266_InitialCreate

1 个答案:

答案 0 :(得分:1)

根据提供的示例输出,命令似乎返回文本。

关于换行符的split,以及_上的2个属性分开,以后能够对事物进行排序:

#$migrations = Get-Migrations "..."

#test values
$migrations = "201704121534436_SomeMigration999
201703291334212_SomeMigration998
201410110448547_InitializeTables
201410110018266_InitialCreate"

$migrations.Split("`n") | ForEach-Object {
    New-Object -TypeName psobject -Property @{
        Date = $_.Split("_")[0]
        Name = $_.Split("_")[1]
    }
} | Sort-Object Name