目前文件服务器上有以员工编号命名的档案夹,想在离职后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
你参考了我写的《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 }