私のスクリプトでは、ディレクトリ名に日付が含まれる毎日自動的に作成されるサブディレクトリのディレクトリをスキャンしようとしています。 yesterdaysの日付が見つかると(前日のアップロードが必要なので)、別のサブディレクトリ、次に「JONES」を含むファイルを探します。これらのファイルが見つかると、winscp.com
を使用してアップロードするループがforeach
となります。複数のファイルアップロードを確認するPowerShellのWinSCP XMLログ
私の問題は、winscpから作成した.xmlログを使用して、アップロードを確認するためにユーザーに送信しようとしていることです。問題は、.xmlファイルに最後にアップロードされたファイルのみが含まれていることです。
ここに私のスクリプトです:
# Set yesterday's date (since uploads will happen at 2am)
$YDate = (Get-Date).AddDays(-1).ToString('MM-dd-yyyy')
# Find Directory w/ Yesterday's Date in name
$YesterdayFolder = Get-ChildItem -Path "\\Path\to\server" | Where-Object {$_.FullName.contains($YDate)}
If ($YesterdayFolder) {
#we specify the directory where all files that we want to upload are contained
$Dir= $YesterdayFolder
#list every sql server trace file
$FilesToUpload = Get-ChildItem -Path (Join-Path $YesterdayFolder.FullName "Report") | Where-Object {$_.Name.StartsWith("JONES","CurrentCultureIgnoreCase")}
foreach($item in ($FilesToUpload))
{
$PutCommand = '& "C:\Program Files (x86)\WinSCP\winscp.com" /command "open ftp://USERNAME:[email protected]:21/dropoff/ -explicitssl" "put """"' + $Item.FullName + '""""" "exit"'
Invoke-Expression $PutCommand
}
} Else {
#Something Else will go here
}
私はそれが私の$PutCommand
行はすべてForEach
ループ内に含まれていますし、それだけでxmlファイルにそれは/終了を接続するたびに上書きされますが、私は持っていなかったことを感じますそのスクリプトを壊す運はどんなものでもありません。
私はあなたの最初の提案を得ることができました。私は今、ネットの提案に取り組むつもりです。私はまだPowershellにはまだ新しいですが、 "If"ステートメントのすべてを置き換えるために投稿した "try"コードを使用しますか? ありがとうございます。 – jms2k
いいえ、ちょうど 'foreach'ループです。 '$ FilesToUpload ='ステートメントを保持します。 –
エラーが発生しました(接続できません)。私はExplicitSSLをする必要があると思いますか? – jms2k