尝试从SQL查询结果运行Powershell

时间:2019-12-30 18:16:33

标签: powershell

我正在尝试查看是否可以在SQL db中存储Powershell命令或行并在检索时运行它。下面是我的代码示例:

$fields = "SELECT fieldName,exception,syntax FROM import_Fields WHERE HRISid='$srcID'"
            $results = Invoke-Sqlcmd -Query $fields -ServerInstance $Global:sqlHost -Database $Global:sqlDB
            $fvalues = ""
            $values = ""
            $ct = $results.count
            Write-Host $ct
            $i = 1
            foreach($field in $results){
                if($i -lt $ct){
                    $fvalues += $field.fieldName+","
                    #Write-Host $field.exception
                    if($field.exception -eq "0"){
                        $name = $field.fieldName
                        $values += "'"+$row.$name+"'"
                    }else{
                        $name = $field.fieldName
                        $exception = $field.syntax
                        $values += "'"+$exception+"'"
                    }
                }else{
                    $fvalues += $field.fieldName
                    $values += "''"
                }
                $i++
            }

在$ values + =“'” + $ exception +“'”中,我需要日期转换为[[DateTime] :: ParseExact(“ + $ row.LastHireDate +”。Substring(0,10), 'yyyy-MM-dd',[CultureInfo] :: GetCultureInfo('en-US'))“,该操作我想完成并存储在SQL数据库中。可以运行此命令吗?我已经通过Invoke-Command和Invoke-Expression尝试过。

2 个答案:

答案 0 :(得分:0)

我不确定您在$ row.LastHireDate中传递了什么值,但是在调用[DateTime]::ParseExact函数时, 字符串表示形式的格式必须与指定的格式完全匹配,否则将引发异常。

以下代码段均可正常运行。调整您的脚本,使其与ParseExact函数中第二个参数(即yyyy-MM-ddHH:mm:ss

)中的输入日期格式匹配
$Command = "[DateTime]::ParseExact('2020-01-0210:10:38', 'yyyy-MM-ddHH:mm:ss', [CultureInfo]::GetCultureInfo('en-US')).tostring('yyyy-MM-dd HH:mm:ss')"
$dt = Invoke-Expression $Command
Write-Host "Output: $($dt.ToString())" 

更改脚本,然后重试。


如果这对您有用,请不要忘记将其标记为已回答。

答案 1 :(得分:0)

最终完成了以下操作,并使它起作用。

$Converted = "[DateTime]::ParseExact('"+$date+"', 'yyyy-MM-ddTHH:mm:sszzz', [CultureInfo]::GetCultureInfo('en-US')).tostring('yyyy-MM-dd HH:mm:ss')"
$dateConverted = Invoke-Expression $Converted