PowerShell 中使用Copy-Item将一个项目从一个位置复制到另一个位置,可以是复制单个文件、也可以复制文件夹。

复制文件和文件夹

最简单的复制一个文件到另一个文件夹内,如果目标文件夹不存在会自动创建。

Copy-Item "E:\PowerShell\form\1.txt" -Destination "E:\PowerShell\to\"

如果-Destination参数是文件名,就会重命名文件。

Copy-Item "E:\PowerShell\form\1.txt" -Destination "E:\PowerShell\to\2.txt"

使用通配符可以复制文件夹内所有文件到另一个文件内,加上-Recurse就能复制所有的文件和子文件夹的内容。

Copy-Item "E:\PowerShell\form\*" -Destination "E:\PowerShell\to\" -Recurse

- 阅读剩余部分 -

第一步:编写连接 VPN 的脚本

通过rasdial命令可以连接 VPN,系统中需要提前添加名为CD的 VPN,用户名aaa,密码bbb,可以将连接的结果和当前时间存入vpn.log文件供后续查看。

# vpn-conn.ps1
$ras = rasdial CD aaa bbb
$current_time = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
$current_time , $ras >>  D:\script\vpn.log

第二步:编写 PowerShell 计划任务脚本

Register-ScheduledJob创建计划任务,Get-ScheduledJob获取计划任务,New-JobTrigger定义触发器,Add-JobTrigger给计划任务添加触发器。

$jobName = 'vpn-conn'
$filePath = 'D:\script\vpn-conn.ps1'
#创建任务
Register-ScheduledJob -Name $jobName -FilePath $filePath
#获取任务
$job =  Get-ScheduledJob -Name $jobName
#定义触发器
$jobTrigger = New-JobTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval (New-TimeSpan -Minutes 10 ) -RepeatIndefinitely
#添加触发器
$job | Add-JobTrigger -Trigger $jobTrigger

以上命令执行完成后,在系统的计划任务里可以看到已成功添加,另外可以直接用Disable-ScheduledJobUnregister-ScheduledJob来禁用任务和删除任务。

# 禁用任务
Disable-ScheduledJob  -Name vpn-conn 
# 删除任务
Unregister-ScheduledJob -Name vpn-conn