繁体   English   中英

通过PowerShell生成新路径

[英]Generate New Path via PowerShell

我目前正在使用PowerShell脚本将数据库从一台服务器迁移到另一台服务器。 迁移的一部分包括在新服务器上还原数据库。 我想使这种自动化尽可能地动态,因此我的脚本的一部分打开了一个文件浏览器窗口,并允许用户选择在源服务器和新服务器上备份数据库的位置。

这是用户输入步骤的概述。

  1. 脚本获取有关源服务器和实例的信息 (存储在$ server_instance中
  2. 脚本获取有关新服务器以及数据库要迁移到的实例的信息。 (存储在$ new_server_instance中
  3. 脚本获取在源服务器上存储备份文件的路径。 该脚本将打开文件浏览器,并将路径存储在变量中。 (存储在$ local_backup_path中
  4. 脚本获取在目标服务器上存储备份文件的路径。 该脚本将打开文件浏览器,并将路径存储在其他变量中。 (存储在$ target_backup_path中
  5. 脚本执行源服务器上数据库的备份,并将备份文件从$ local_backup_path复制到$ target_backup_path。
  6. 脚本从$ target_backup_path恢复新服务器上的数据库。 这是我遇到问题的步骤

这是路径的示例,将我引向我的实际问题:

$ local_backup_path = T:\\ PowerShell \\ Testing \\ backup

$ target_backup_path = \\\\ $ target_server \\ T $ \\ PowerShell \\ backups

我正在运行以下命令,以从最近迁移的备份文件中还原新服务器上的数据库:

Restore-SqlDatabase -ServerInstance $New_Server_Instance -Database $database -BackupFile "$target_backup_path\$database.bak"
Write-Host "$database has been restored on the new server"

这是有问题的,因为-ServerInstance参数中已经提供了服务器时,服务器名称位于路径中。 因此,如何将路径从\\\\ $ target_server \\ T $ \\ PowerShell \\ backups更改为T:\\ Powershell \\ backups

我需要进行此更改,以便它适用于用作参数的任何服务器。

看起来这样有效,比我预期的简单得多:

$target_backup_path = $target_backup_path.Replace("\\$target_server\", "")
$target_backup_path = $target_backup_path.Replace("$", ":")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM