在变量的多行中添加同一行

Add same line in multiple lines in variable

我有以下 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 test@192.168.22.156:/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 test@192.168.22.156:/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 test@192.168.22.156:/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 test@192.168.22.156:/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 test@192.168.22.156:/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 test@192.168.22.156:/SQLSLinuxServerDB_backup_2017_08_11_044003_2408719.trn

有什么方法可以在我的 PowerShell 脚本中使用字符串或变量来使用上述命令,而不是对其进行硬编码。

我试过这个

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

但这并不是我想的那样。

要获取 最新,在 LastWriteTime 排序后,获取 $trn 数组中的最后一个索引 (-1):

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

如果要将 $tlogs 添加到 所有 $trn 中的名称并发出 ascp 命令,请使用循环:

foreach($file in $trn){
    # Construct local file path
    $LocalPath = Join-Path $tlogs $file.Name
    # Construct remote file path
    $RemotePath = 'test@192.168.22.156:/{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
}