在变量的多行中添加同一行
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
}
我有以下 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
}