
# 准备工作
#### 配置PowerShell执行策略
检查执行策略，确保PowerShell允许运行脚本。打开PowerShell，输入以下命令检查当前执行策略：
```
Get-ExecutionPolicy
```
以下是不同的返回结果说明：
- Restricted：不允许执行任何脚本。
- AllSigned：只能运行由可信发布者签名的脚本。
- RemoteSigned：允许运行本地创建的脚本，但远程下载的脚本必须经过签名。
- Unrestricted：允许运行所有脚本，但会在运行从互联网下载的脚本时发出警告。
- Bypass：不阻止任何脚本的执行，不会显示任何警告或提示。
如果执行策略为**Restricted** 或**AllSigned**，请通过以下命令临时更改策略，以允许运行本地创建的脚本和已签名的远程脚本。
```
Set-ExecutionPolicy RemoteSigned -Scope Process
```
该命令仅在当前PowerShell会话中更改执行策略，并在会话结束后恢复为默认策略。
 #### CSV文件准备
创建一个包含源端主机信息的CSV文件，确保文件能被访问，并且格式符合要求。格式如下：
```
username,ip,port,password
```
- **username**：该字段表示登录源端主机时所使用的用户名。为了确保脚本具有足够的权限执行修改操作，通常应使用具有管理员权限的用户名，如Administrator。
- **ip**：该字段表示源端主机的内网IP地址。
- **port**：该字段表示WinRM服务监听的端口号（默认是5985）。
- **password**：该字段表示登录源端主机时所需的密码。脚本将使用此密码通过WinRM协议自动登录到源端主机。
![](https://support.huaweicloud.com/bestpractice-mgc/public_sys-resources/caution_3.0-zh-cn.png)
- CSV文件的第一行是标题行。
- CSV文件的每一行对应一台主机信息，并且每一列信息之间用英文逗号分隔。
- 确保格式正确和信息准确，不要出现多余的空格、逗号或无效的IP地址等。
 
示例：
```
username,ip,port,password
Administrator,192.168.1.10,xx,examplePass123
Administrator,192.168.1.11,xx,examplePass456
```
 #### Hosts文件准备
创建一个文本文件，包含需要追加到源端主机hosts文件中的内容，并确保该文件能被访问。文件内写入相关云服务的接口域名映射，并以**#Migration-proxy-start** 开始，**以#Migration-proxy-end**结束。相关云服务的接口域名映射需要根据具体的环境而定，请联系对应局点的环境接口人获取。
示例：
```
#Migration-proxy-start
xxx.xxx.xxx.xxx  iam.xxx.com
xxx.xxx.xxx.xxx  ecs.xxx.com
xxx.xxx.xxx.xxx  evs.xxx.com
xxx.xxx.xxx.xxx  ims.xxx.com
xxx.xxx.xxx.xxx  obs.xxx.com
xxx.xxx.xxx.xxx  eps.xxx.com
xxx.xxx.xxx.xxx  vpc.xxx.com
#Migration-proxy-end
```
#### 日志目录准备
- **配置日志目录** ：脚本默认使用 C:\\Users\\Public\\Hosts_Script_Logs 作为日志存储目录。目录不存在的话，脚本会自动创建，如果需要更改日志存储路径，请修改脚本中的 **$logDir** 变量的值。
- **检查日志目录权限**：确保当前用户对日志目录有写入权限。如果权限不足，需要调整目录权限或选择其他路径。
 
#### 检查网络连通性
- **网络连接** **检查** ：确认执行脚本的本地计算机能够通过网络访问所有源端Windows主机的IP地址和端口。源端Windows主机需要对执行脚本的主机开放 **5985**端口。
- **防火墙配置**：检查并配置本地计算机和源端主机的防火墙，确保允许通过WinRM（Windows远程管理）连接进行远程PowerShell会话。
- **启用WinRM服务** ：确保所有源端Windows主机上的WinRM服务已启用并正常运行。可以在源端主机上使用以下命令启用WinRM：
  ```
  Enable-PSRemoting -Force
  ```
  
 
