We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
为了方便运维,便写了个 PowerShell 脚本,每周定时执行该脚本,来给阿里云服务器上的各块云盘创建手动快照,并在快照均创建完毕之后重启实例。
cls # 在这里记录各云盘的 ID $cDiskId = "d-****" $dDiskId = "d-****" $eDiskId = "d-****" # 为各云盘创建快照的代码 # 利用字符串模板提高代码复用性 $cmdTemplate = "aliyun ecs CreateSnapshot --DiskId {0} --SnapshotName '{1}-Disk-Before-Reboot'" $cDiskBackupCmd = $cmdTemplate -f $cDiskId, "C" $dDiskBackupCmd = $cmdTemplate -f $dDiskId, "D" $eDiskBackupCmd = $cmdTemplate -f $eDiskId, "E" # 执行创建快照的操作,并获取命令执行后返回的快照 ID $cSnapShotId = iex $cDiskBackupCmd $cSnapShotId = $cSnapShotId[2] | ConvertFrom-String $cSnapShotId = $cSnapShotId.P3 -replace '"','' $dSnapShotId = iex $dDiskBackupCmd $dSnapShotId = $dSnapShotId[2] | ConvertFrom-String $dSnapShotId = $dSnapShotId.P3 -replace '"','' $eSnapShotId = iex $eDiskBackupCmd $eSnapShotId = $eSnapShotId[2] | ConvertFrom-String $eSnapShotId = $eSnapShotId.P3 -replace '"','' #Write-Host $("C 盘快照 ID:{0}" -f $cSnapShotId) #Write-Host $("D 盘快照 ID:{0}" -f $dSnapShotId) #Write-Host $("E 盘快照 ID:{0}" -f $eSnapShotId) # 查询各云盘快照的代码 $snapshotQueryTemplate = "aliyun ecs DescribeSnapshots --RegionId cn-qingdao --DiskId {0} --SnapshotType user --output cols=SnapshotId,SnapshotName,Status rows=Snapshots.Snapshot[]" $cDiskSnapshotsQueryCmd = $snapshotQueryTemplate -f $cDiskId $dDiskSnapshotsQueryCmd = $snapshotQueryTemplate -f $dDiskId $eDiskSnapshotsQueryCmd = $snapshotQueryTemplate -f $eDiskId $stopFlag = $FALSE while(!$stopFlag) { # 每 20 秒查询一次各云盘快照 $cDiskSnapshots = iex $cDiskSnapshotsQueryCmd $dDiskSnapshots = iex $dDiskSnapshotsQueryCmd $eDiskSnapshots = iex $eDiskSnapshotsQueryCmd $cSnapShotStatus = "" $dSnapShotStatus = "" $eSnapShotStatus = "" # 在各云盘的快照列表中找到本次创建的快照,获取其状态 forEach ($cDiskSnapshot in $cDiskSnapshots) { if ($cDiskSnapshot -match $cSnapShotId) { $cSnapShotStatus = $cDiskSnapshot.Split(' | ')[-1] #Write-Host $("C 盘快照状态: {0} {1}" -f $cSnapShotStatus,$(Get-Date)) } } forEach ($dDiskSnapshot in $dDiskSnapshots) { if ($dDiskSnapshot -match $dSnapShotId) { $dSnapShotStatus = $dDiskSnapshot.Split(' | ')[-1] #Write-Host $("D 盘快照状态: {0} {1}" -f $dSnapShotStatus,$(Get-Date)) } } forEach ($eDiskSnapshot in $eDiskSnapshots) { if ($eDiskSnapshot -match $eSnapShotId) { $eSnapShotStatus = $eDiskSnapshot.Split(' | ')[-1] #Write-Host $("E 盘快照状态: {0} {1}`n" -f $eSnapShotStatus,$(Get-Date)) } } # 如各云盘的快照均创建完成,则结束循环 if (($cSnapShotStatus -eq 'accomplished') -and ($dSnapShotStatus -eq 'accomplished') -and ($eSnapShotStatus -eq 'accomplished')) { $stopFlag = $TRUE Break } Start-Sleep -Seconds 20 } #Write-Host "所有磁盘快照已创建成功!" # 最后重启实例即可 $rebootCmd = "aliyun ecs RebootInstance --InstanceId i-****" iex $rebootCmd
脚本编写完成后,将其添加到 Windows 的计划任务中,每周定时运行即可。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
需求描述
为了方便运维,便写了个 PowerShell 脚本,每周定时执行该脚本,来给阿里云服务器上的各块云盘创建手动快照,并在快照均创建完毕之后重启实例。
前期准备
关键代码
自动运行
脚本编写完成后,将其添加到 Windows 的计划任务中,每周定时运行即可。
The text was updated successfully, but these errors were encountered: