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 Corporation. 無断転載を禁じます。全著作権所有。
PS H:> C:\powershell_MoveKoreFiles.ps1 式またはステートメントに予期しないトークン 'in' があります。C:\powershell_MoveKoreFiles.ps1:1 文字:472 + add-pssnapin sqlserverprovidersnapin100 add-pssnapin sqlservercmdletsnapin100 Set-Location SQLSERVER:\SQL\LOCALHOST\DEFAULT\Databases\SYSDB\Tables\dbo.STG0_ EXPORT_JOBS $ds=Invoke-Sqlcmd -クエリ "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'" -ServerInstance "LOCALHOST" foreach ($files in <<<< $ds){$oldestfile = Get-ChildItem C :\Scripts|where{!$ .PSIsContainer -and $.Name.EndsWith("$($files.export)")}|sort-object -property name -descending|select-object -first 1 Name|Copy-Item -path "C:\Scripts\"+$oldestfile .substring(7 ,$oldestfile.length - 8) -destination C:\Scripts\MEMBERS} + CategoryInfo : ParserError: (in:String) [], ParseException + FullyQualifiedErrorId : UnexpectedToken
PS H:>