Я выполняю запрос в SQL Server и возвращаю набор результатов из одного столбца. Мне нужно перебрать набор результатов и найти имена файлов, соответствующие записи из набора результатов. Часть имени файла является порядковым номером. Мне нужно отсортировать файлы в порядке возрастания, выбрать первый файл, а затем скопировать только этот файл в подкаталог. Записи в наборе результатов выглядят так:
MEMBERS.net MEMBERS_COMMENTS1.net
MEMBERS_COMMENTS2.net
MEMBERS_LANGUAGE.net
MEMBERS_COVER_OHC.net
MEMBERS_PROBLEM_LIST.net
Имена файлов имеют такую структуру:
00_1914330_MEMBERS.net
Может кто-нибудь сказать мне, почему это не достигает моего конечного результата?
add-pssnapin sqlservercmdletsnapin100
add-pssnapin sqlserverprovidersnapin100
cd SQLSERVER:\SQL\LOCALHOST\DEFAULT\Databases\SYSDB\Tables\dbo.STG0_EXPORT_JOBS
$ds = Invoke-Sqlcmd -ServerInstance 'LOCALHOST' -Query "SELECT CASE WHEN SUBSTRING([EXPORT_NAME],1,3) = 'MHC' THEN SUBSTRING([EXPORT_NAME],5,(LEN([EXPORT_NAME])))+'.net' ELSE [EXPORT_NAME]+'.net' END AS export FROM [SYSDB].[dbo].[STG0_EXPORT_JOBS] WHERE [JOB_NAME] = 'MHC_STG0_MEMBERS'"
foreach ($files in $ds) {
$oldestfile = Get-ChildItem C:\Scripts |
where{!$_.PSIsContainer -and $_.Name.EndsWith("$($files.export)")} |
sort-object -property name | select-object -first 1 Name |
Copy-Item "C:\Scripts\" + $oldestfile.substring(7,$oldestfile.length - 8) `
C:\Scripts\MEMBERS
}
Вот что я получаю, когда запускаю это:
Windows PowerShell
Copyright (C) 2009 Корпорация Microsoft. Все права защищены.
PS H:> C: \ powershell_MoveKoreFiles.ps1
Неожиданный токен «in» в выражении или утверждении.
В C: \ powershell_MoveKoreFiles.ps1: 1 char: 472
+ add-pssnapin sqlserverprovidersnapin100 add-pssnapin sqlservercmdletsnapin100
Set-Location SQLSERVER: \ SQL \ LOCALHOST \ DEFAULT \ Databases \ SYSDB \ Tables \ dbo.STG0_
EXPORT_JOBS $ ds = Invoke-Sqlcmd -Query "ВЫБРАТЬ СЛУЧАЙ, КОГДА ПОДПИСЫВАЕТСЯ ([EXPORT_NAME],
1,3) = 'MHC' THEN SUBSTRING ([EXPORT_NAME], 5, (LEN ([EXPORT_NAME]))) + '. Net' ELSE [
EXPORT_NAME] + '. Net' END AS экспорт из [SYSDB]. [Dbo]. [STG0_EXPORT_JOBS] WHERE [
JOB_NAME] = 'MHC_STG0_MEMBERS' "-ServerInstance" LOCALHOST "foreach ($ файлы в
<<<< $ ds) {$ oldfile = Get-ChildItem C: \ Scripts |, где {! $ <em>.PSIsContainer -and
$ .Name.EndsWith ("$ ($ files.export)")} | объект сортировки -имя свойства -сходящий | se
lect-object -first 1 Name | Copy-Item -path "C: \ Scripts \" + $ oldfile.substring (7
, $ oldfile.length - 8) -destination C: \ Scripts \ MEMBERS}
+ CategoryInfo: ParserError: (in: String) [], ParseException
+ FullyQualifiedErrorId: UnexpectedToken
PS H:>