我想,以检查是否在表中的最新行已在当前时间使用以下脚本检查补充说:
$updateTime = "SELECT TOP 1 FORMAT([UPDATE_TIME], 'M/d/yyyy h:mm tt') FROM [dbo].[$Table] ORDER BY UPDATE_TIME DESC" |
Select -ExpandProperty UPDATE_TIME;
添加格式之前,扩大财产被工作得很好的预期让我最新UPDATE_TIME值
$updateTime = "SELECT TOP 1 [UPDATE_TIME] FROM [dbo].[$Table] ORDER BY UPDATE_TIME DESC" |
Select -ExpandProperty UPDATE_TIME;
然而,当我加入FORMAT
到查询,它导致该错误:
选择:属性“UPDATE_TIME”无法找到。
- ... BLE] ORDER BY UPDATE_TIME DESC” |选择-ExpandProperty UPDATE_TIME;
我需要使用FORMAT
因为我想忽略秒,或者如果有远,我可以忽略UPDATE_TIME
值和Get-Date
值,这将是更好之间1秒的差别。
$today = (Get-Date).ToString('M/d/yyyy h:mm tt')
if ($updateTime -eq $today) {
Write-Host "`r`n generated successfully at [ $updateTime ]"
} else {
Write-Host "`r`n NOT generated at [ $today ]"
}
请问您的PowerShell控制台自动执行字符串作为SQL查询? PowerShell不正常做到这一点。
总之,假设你的PowerShell实例实际工作这种方式,使用FORMAT()
功能(或其他功能)改变的结果列,这反过来又成为输出对象(S)的各自属性的名称的标题。正因为如此UPDATE_TIME
不那些对象上存在,因此该属性不能扩展。
您需要定义一个列名来修复:
SELECT TOP 1 FORMAT(...) AS UPDATE_TIME ...