1. 概览
PowerShell 是一种基于 .NET Framework 构建的命令行 shell 和相关脚本语言。它是 Windows 世界中使用的默认任务自动化和配置管理工具。PowerShell cmdlet 是在 PowerShell 中调用的轻量级命令。
Cloud Tools for PowerShell 是一组 cmdlet,可用于访问和操纵 Google Cloud 资源,例如 Google Compute Engine、Google Cloud Storage、Google Cloud SQL 和 Google Cloud DNS,未来还将支持更多资源!
请跟随本实验的步骤,了解如何通过 PowerShell 与 Google Cloud 资源进行交互。
学习内容
- 如何安装 Cloud Tools for PowerShell。
- 如何使用 Google Cloud SDK 进行身份验证。
- 如何通过 PowerShell 创建和管理 Google Compute Engine。
- 如何通过 PowerShell 将数据备份到 Google Cloud Storage。
所需条件
您打算如何使用本教程?
您如何评价自己在 Google Cloud Platform 方面的经验水平?
2. 设置和要求
在此 Codelab 中,您需要一个 Google Cloud 项目才能与 PowerShell 进行交互。如果您有现有项目,可以使用该项目,也可以按照以下步骤创建新项目。
自定进度的环境设置
如果您还没有 Google 账号(Gmail 或 GSuite),则必须创建一个。登录 Google Cloud 控制台 ( console.cloud.google.com) 并创建一个新项目:


请记住项目 ID,它是所有 Google Cloud Platform 项目中的唯一名称。它稍后将在此 Codelab 中被称为 PROJECT_ID。
接下来,您需要在 Google Cloud 控制台中启用结算功能,才能使用 Google Cloud Platform 资源,例如 Google Cloud Datastore 和 Cloud Storage。
Google Cloud Platform 的新用户有资格获享$300 免费试用。在此 Codelab 中运行仅花费几美元,但是如果您决定使用更多资源或继续让它们运行,费用可能更高(请参阅本文档末尾的“清理”部分)。
3. 安装
自定进度的环境安装
PowerShell cmdlet 随 Cloud SDK for Windows 一起提供。如果您尚未这样做,请按照 Windows 快速入门指南中的说明下载并安装适用于 Windows 的 Google Cloud SDK。确保在安装 Cloud SDK 时已选中 PowerShell 选项。

4. 身份验证
Cloud Tools for PowerShell 使用存储在 Cloud SDK 中的凭据和设置。因此,如需开始使用 cmdlet,您需要先使用 Cloud SDK 登录。
自定进度的环境身份验证
启动 Google Cloud SDK Shell 并运行以下命令。
gcloud init
接受使用您的 Google 用户账号进行登录的选项。
To continue, you must log in. Would you like to log in (Y/n)? Y
在浏览器中,根据提示登录您的 Google 用户账号,然后点击允许以授权访问 Google Cloud Platform 资源。
在命令提示符处,从您拥有所有者、编辑者或查看者权限的项目列表中选择一个 Cloud Platform 项目。
Pick a cloud project to use:
[1] [my-project-1]
[2] [my-project-2]
...
Please enter your numeric choice:
5. 在 PowerShell 中运行 Google Cloud cmdlet
完成身份验证后,您就可以在 PowerShell 中使用 Google Cloud cmdlet 了。找到并打开 PowerShell 命令行 shell。

如需确保 Google Cloud cmdlet 已正确安装,请运行 Get-GceInstance cmdlet。这应该会列出您在项目中拥有的 Compute Engine 实例。

6. 创建和管理 Google Compute Engine 实例
在本部分中,您将从 Google Cloud Tools for PowerShell 中创建和管理 Google Compute Engine。
创建实例配置
在创建实例之前,必须先创建实例配置。此配置至少需要名称、机器类型和启动磁盘映像,或者原先就有启动磁盘。使用 Get-GceImage 创建磁盘映像,并使用 New-GceInstanceConfig 创建配置。
$disk = Get-GceImage "windows-cloud" -Family "windows-2012-r2"
$config = New-GceInstanceConfig "my-vm-1" `
-MachineType "n1-standard-4" `
-DiskImage $disk
至此,您已拥有可用于创建实例的配置。
创建实例
使用 Add-GceInstance cmdlet 创建新的 Compute Engine 实例。您可以指定项目和可用区,但如果省略,参数值会默认为当前活跃 Cloud SDK 配置中的值。如果您指定了项目,请务必将 PROJECT_ID 替换为您自己的项目 ID。
$config | Add-GceInstance -Project PROJECT_ID -Zone europe-west1-b
管理实例
您可以使用 Get-GceInstance cmdlet 检索项目的虚拟机实例。由于实例名称在项目或地区中可能不唯一,因此您可以指定“项目”或“地区”参数以缩小搜索范围。默认情况下,cmdlet 使用活动 Cloud SDK 配置中的值。
$instance = Get-GceInstance "my-vm-1"
使用 Set-GceInstance cmdlet 创建实例后,您可以设置实例标记、磁盘、访问配置和其他元数据。添加一些元数据,然后按如下方式移除。
Set-GceInstance $instance -AddMetadata @{"newKey" = "newValue"}
Set-GceInstance $instance -RemoveMetadata "newKey"
Set-GceInstance $instance -RemoveTag "beta" -AddTag "alpha"
现在,添加一个您稍后将用于移除实例的标记。
Set-GceInstance $instance -AddTag "to-be-removed"
您可以使用各种 cmdlet 启动、停止或重新启动实例。您可以使用从 Get-GceInstance cmdlet 返回的名称或强类型对象来引用实例。尝试使用以下命令。
Stop-GceInstance $instance
Start-GceInstance $instance
Restart-GceInstance "my-vm-1"
最后,用完实例后,可以使用 Remove-GceInstance cmdlet 并提供您之前指定的标记,将其从 Compute Engine 中移除。
Get-GceInstance -Project $project |
Where { $_.Tags.Items -contains "to-be-removed" } |
Remove-GceInstance -WhatIf
7. 将数据备份到 Google Cloud Storage
在此 Codelab 的这一部分中,您将使用 Cloud Tools for PowerShell 将本地计算机中的数据备份到 Google Cloud Storage。
创建存储桶
在将文件上传到 Cloud Storage 之前,您需要创建一个存储分区。使用 New-GcsBucket cmdlet 创建新的存储分区。
$bucket = "my-gcs-bucket"
New-GcsBucket $bucket
将文件上传到存储分区
您可以使用 New-GcsObject 将文件或整个文件夹上传到存储分区。
您可以使用 -File 参数并指定文件路径,将本地文件的内容上传到 Cloud Storage。或者,您可以通过 PowerShell 流水线将对象的内容作为字符串传递,也可以使用 -Value 参数。
选择您本地机器上的一个文件,然后按如下方式上传到您的存储分区。
New-GcsObject -Bucket "my-gcs-bucket" -File "C:\path\to\some\file\hello.txt"
您可以使用 -UploadFolder 参数并指定文件夹路径,将本地磁盘中的整个目录上传到 Cloud Storage。如果您不希望将文件夹直接上传到 Cloud Storage 存储分区的根目录,请使用 -ObjectNamePrefix 指定一个前缀,该前缀将应用于上传的每个对象。
在本地机器上选择一个文件夹,然后按如下方式上传到存储分区。
New-GcsObject -Bucket "my-gcs-bucket" -Folder "C:\path\to\some\folder"
搜索数据
您可以使用 cmdlet 搜索数据,也可以使用提供程序,通过常见文件搜索 cmdlet 搜索数据。请尝试使用您的存储分区运行以下命令。
Get-GcsObject $bucket | Select Name, Size | Out-GridView
您应该会看到一个弹出式网格,其中包含名称和大小。

读取数据
您可以使用 Read-GcsObject cmdlet 读取数据。例如,您可以使用以下命令将名为 hello.txt 的文件读取到桌面。
Read-GcsObject $bucket "hello.txt" `
-OutFile "$Env:UserProfile\Desktop\hello.txt"
删除数据
最后,您可以使用 Remove-GcsObject cmdlet 删除数据。使用以下命令删除相应存储分区的所有内容。
Get-GcsObject $bucket | Remove-GcsObject
8. 恭喜!
在此 Codelab 中,您学习了如何从 PowerShell 管理 Compute Engine 实例和 Cloud Storage 存储分区,但还有更多内容!您还可以使用 PowerShell 管理 Cloud SQL 和 Cloud CDN 资源。如需了解详情,请查看下方的后续步骤列表。
所学内容
- 如何安装 Cloud Tools for PowerShell。
- 如何使用 Google Cloud SDK 进行身份验证。
- 如何通过 PowerShell 创建和管理 Google Compute Engine。
- 如何通过 PowerShell 将数据备份到 Google Cloud Storage。