加速PowerShell脚本(Invoke-Sqlcmd和Word对象)

时间:2017-11-17 03:37:01

标签: powershell tsql

所以我在我的剧本中有这个循环:

false

基本上,我正在使用单词模板为数据库中的记录创建恶搞简历。该脚本可以工作,但它每5秒只创建大约2到3个简历,这是一个问题,因为我需要填充整个数据库(100万个欺骗记录)。

另外,它只会变得更长,因为在某些时候我会定制这个,所以模板不是随机的,而是迎合了这个人的行业,以及在每个简历中添加更多的数据(技能,参考资料等)。

我能做些什么来加快这个速度吗?

1 个答案:

答案 0 :(得分:0)

第一步是确保您在PowerShell 3.0或更高版本下运行此脚本。办公室COM对象因PowerShell 2.0的性能不佳而闻名,如果不编辑脚本,它可能会运行得更快。

对于整个脚本,我会调整从SQL Server检索数据的部分。如评论所述,您可以将其转换为一个电话。

如果没有样本数据或知道$candList中的文件真正包含哪些内容,您可以将脚本的上半部分设为:

$candData = Get-Content $candList -Raw | ForEach-Object {$_ -replace '\s',''}

$qry = "
    SELECT personFistName,
        LEFT(personFirstName, 1) AS personLastName,
        personSurname,
        CandidateAddress,
        CandidateCity,
        CandidatePostcode,
        personMobileTelephone,
        CandidateState
    FROM tblCandidate
    WHERE personID IN ($($candData -split ','));
"
$templateDir = Get-ChildItem ($ScriptPath + "Templates\Resumes\") | Get-Random -Count 1 
$templateFile = $templateDir
$templateDir =  ($ScriptPath + "Templates\Resumes\" + $templateDir)

$data = Invoke-SqlCmd -ServerInstance $ServerAddress -Database $DatabaseName -Query $qry

foreach ($row in $data) {
    $lname = $row.personLastName
    $firstname = $row.personFirstName
    $surname   = $row.personSurname
    $Address1  = $row.CandidateAddress
    $City      = $row.CandidateCity
    $Postcode  = $row.CandidatePostcode
    $Mobile    = $row.personMobileTelephone
    $State     = $row.CandidateState