PowerShell如何对数据库返回结果集进行变量调用?


PowerShell交流中心PowerShell如何对数据库返回结果集进行变量调用?
0
lb15859 asked 6 年 ago

目前文件服务器上有以员工编号命名的档案夹,想在离职后30天自动删除,根据数据库查询返回结果集,不知用什么语法调用,求大神协助…

#连接数据库
$connectionString = ‘Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Initial Catalog=***;Data Source=***’

#执行语句方法(WERKS公司别,PERNR员工编号)
$Sql = “select WERKS,PERNR from SKM.dbo.ZHRMASTER with (nolock) where PERSG in (‘B’,’C’,’E’) and isNull(LEAVED,’9999-12-31′) < dateadd(day,-30,getdate()) order by PERNR”

#打开数据库连接
$db = New-Object -ComObject ADODB.Connection
$db.Open($ConnectionString)
$rs = $db.Execute($Sql)

#使用 While/Switch
While($rs.EOF -eq $false)
#判断指针是否移动到数据库结果集的最后一位,-eq验证是否相等
{

$hash = @{}
foreach ($field in $rs.Fields) {
$hash.$($field.Name) = $field.Value}

#如何根据数据库返回结果集选定公司?
switch(???)
{
3000 {$txtFileSvr = “AFS3000W01”;break}
3010 {$txtFileSvr = “AFS3010W01”;break}
3920 {$txtFileSvr = “AFS3920W01”;break}
}

#如何根据数据库返回结果集指定路径?

$txtHomeDirectory = -join (“\\”,”AFS3000W01″,”\D$\Terminal\VDI\”,”???“)

IF (Test-Path $txtHomeDirectory)
{
remove-item -path $txtHomeDirectory -recurse -force
}

$rs.MoveNext()
}
#关闭数据库连接
$rs.close()
$db.close()

 

#数据库查询结果

PERNR          WERKS
———————
00000536   3000
00001836    3000
60003875    3010

1 Answers
0
Mooser Lee 管理员 answered 6 年 ago

你参考了我写的《PowerShell 连接SQL Server 数据库》的文章后,你自己只需要写5行代码就能完成你的工作:

$conn = New-SqlConnection -connectionStr "XXX"
Get-SqlDataTable -SqlConnection $conn -query 'select WERKS,PERNR from XXX ' |  foreach { 
  $txtHomeDirectory =  '\\AFS{0}W01\D$\Terminal\VDI\{1}' -f $_.WERKS,$PERNR
  # remove-item -path $txtHomeDirectory -recurse -force
}