【发布时间】:2020-07-19 11:14:32
【问题描述】:
我正在为 Azure PowerShell 3.1.0 编写一个 PowerShell 脚本:
- 从 JSON 中获取内容
- 根据 MigratedFlag='Y' 的条件循环浏览内容并按
OrderNo升序排序 - 使用
Invoke-Sqlcmd从Location执行SQL 文件 - 如果我的值位置等于执行的脚本,则更新 MigratedFlag=N
除了第 2 步,我可以执行所有步骤,即按 OrderNo 排序并在 MigratedFlag 上添加条件,
这是 JSON 内容的 sn-p:
[
{
"OrderNo": "1",
"Location": "ETS\\Stage_PS\\FS_PS_CUSTOMER.sql",
"MigratedFlag": "Y",
"Description": "Creation of STG_PS_FS.PS_CUSTOMER"
},
{
"OrderNo": "2",
"Location": "ETS\\Stage_PS\\FS_PS_CUST_ADDRESS.sql",
"MigratedFlag": "Y",
"Description": "Creation of STG_PS_FS.PS_CUST_ADDRESS"
},
{
"OrderNo": "3",
"Location": "ETS\\Stage_PS\\FS_PS_CUST_ADDR_SEQ.sql",
"MigratedFlag": "Y",
"Description": "Creation of STG_PS_FS.PS_CUST_ADDR_SEQ"
}
]
以下是我正在使用的 PS 脚本(无法在 Select-Object 中使用 Sort-Object 或 Where-Object):
$v_JSON = Get-Content '$(system.defaultworkingdirectory)\xxxxx\BuildOrder.json' -raw | ConvertFrom-Json
$v_JSON | Select-Object -Property Location | ForEach {
$Script = $_.Location
Write-Host "Executing Script"$Script
Invoke-Sqlcmd -ServerInstance "InstanceName" -Database $(database) -Username $(testauto_username) -Password $(testauto_password) -InputFile $(system.defaultworkingdirectory)\$Script
$v_JSON | % {if($_.Location -eq $Script){$_.MigratedFlag='N'}}
$v_JSON | ConvertTo-Json -depth 32| set-content '$(system.defaultworkingdirectory)\xxxxx\BuildOrder.json'
}
【问题讨论】:
标签: powershell powershell-3.0 azure-powershell select-object