2017-08-11 3 views
0

に複数行で同じ行を追加します。以下は私は特定の時間から作成されたファイルを取得するPowerShellスクリプトの下に持っている変数

$diff = "H:\DBBackup\server1\queryDB\Diff\" 
$tlogs = "H:\DBBackup\server1\queryDB\trn\" 

$compareDate = Get-Date (Get-Item $diff).LastWriteTime 

$trn = Get-ChildItem -Path $tlogs | Where-Object { 
    $_.LastWriteTime -gt $compareDate -and !($_.PSIsContainer) 
} | Sort-Object LastWriteTime 

$trn.Name 

すると、私は今

 
SQLSLinuxServerDB_backup_2017_08_10_043503_8807816.trn 
SQLSLinuxServerDB_backup_2017_08_10_044003_8906811.trn 
SQLSLinuxServerDB_backup_2017_08_10_053903_4501615.trn 
SQLSLinuxServerDB_backup_2017_08_11_032503_7408313.trn 
SQLSLinuxServerDB_backup_2017_08_11_043003_7803417.trn 
SQLSLinuxServerDB_backup_2017_08_11_044003_2408719.trn 

を期待されている上記のスクリプトの出力であります上記のスクリプトで以下のコマンドを実行するには、上記の値を$tlogに追加してください。

ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_10_043503_8807816.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_10_043503_8807816.trn 
ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_10_044003_8906811.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_10_044003_8906811.trn 
ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_10_053903_4501615.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_10_053903_4501615.trn 
ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_11_032503_7408313.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_11_032503_7408313.trn 
ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_11_043003_7803417.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_11_043003_7803417.trn 
ascp -T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk" H:\DBBackup\server1\queryDB\trn\SQLSLinuxServerDB_backup_2017_08_11_044003_2408719.trn [email protected]:/SQLSLinuxServerDB_backup_2017_08_11_044003_2408719.trn 

代わりにそれをhardcoadingの私のPowerShellスクリプト内の文字列または変数を使用して上記のコマンドを使用する方法はあります。

私はこの

$LatestDiffFile = $tlogs + $trn.Name 
$LatestDiffFile 

と試みたが、これは私が考えた方法は動作しません。

+0

'$ tlogs + $ trn [-1] .Name' –

+0

'$ trn | %{Join-Path $ tlogs $ _。Name} ' –

+0

フルパスを取得するには、' $ trn.FullName'を使用できます。 – gms0ulman

答えて

1

$trn配列の最後のインデックス(-1)つかむ、LastWriteTimeにソートした後、最新を取得するには:あなたが$trn$tlogsすべてに名前を付加したい場合は

$LatestDiffFile = $tlogs + $trn[-1].Name 

をし、 ascpコマンドを発行し、ループを使用してください:

foreach($file in $trn){ 
    # Construct local file path 
    $LocalPath = Join-Path $tlogs $file.Name 
    # Construct remote file path 
    $RemotePath = '[email protected]:/{0}' -f $file.Name 
    # Prepare ascp arguments 
    $ascpArgs = '-T -l 100m -m 10m -i "C:\Users\abc\.ssh\id_putty.ppk"',$LocalPath,$RemotePath 

    # Execute 
    & ascp $ascpArgs 
} 
+0

@Mathias R. Jessen、ありがとうございました。 –

関連する問題