1. ภาพรวม
PowerShell คือเชลล์บรรทัดคำสั่งและภาษาการเขียนสคริปต์ที่เกี่ยวข้องซึ่งสร้างขึ้นบน .NET Framework ซึ่งเป็นเครื่องมือการจัดการการกำหนดค่าและระบบงานอัตโนมัติเริ่มต้นที่ใช้ในโลกของ Windows Cmdlet ของ PowerShell เป็นคำสั่งที่มีน้ำหนักเบาซึ่งเรียกใช้ภายใน PowerShell
Cloud Tools for PowerShell คือชุดของ Cmdlet สำหรับการเข้าถึงและจัดการทรัพยากร Google Cloud เช่น Google Compute Engine, Google Cloud Storage, Google Cloud SQL และ Google Cloud DNS โดยจะมีเพิ่มขึ้นเรื่อยๆ
ทำตามแล็บนี้เพื่อดูวิธีโต้ตอบกับทรัพยากร Google Cloud จาก PowerShell
สิ่งที่คุณจะได้เรียนรู้
- วิธีติดตั้ง Cloud Tools for PowerShell
- วิธีตรวจสอบสิทธิ์ด้วย Google Cloud SDK
- วิธีสร้างและจัดการ Google Compute Engine จาก PowerShell
- วิธีสำรองข้อมูลไปยัง Google Cloud Storage จาก PowerShell
สิ่งที่คุณต้องมี
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งาน Google Cloud Platform เท่าไร
2. การตั้งค่าและข้อกำหนด
สำหรับ Codelab นี้ คุณต้องมีโปรเจ็กต์ Google Cloud เพื่อโต้ตอบกับ PowerShell หากมีโปรเจ็กต์อยู่แล้ว คุณจะใช้โปรเจ็กต์นั้นหรือสร้างโปรเจ็กต์ใหม่โดยทำตามขั้นตอนต่อไปนี้ก็ได้
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
หากยังไม่มีบัญชี Google (Gmail หรือ G Suite) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud ( console.cloud.google.com) แล้วสร้างโปรเจ็กต์ใหม่โดยทำดังนี้


โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud Platform ทั้งหมด ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้
จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินในคอนโซล Google Cloud เพื่อใช้ทรัพยากร Google Cloud Platform เช่น Google Cloud Datastore และ Cloud Storage
ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรีมูลค่า$300 การทำ Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป (ดูส่วน "การล้างข้อมูล" ที่ท้ายเอกสารนี้)
3. การติดตั้ง
การติดตั้งสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
Cmdlet ของ PowerShell จะมาพร้อมกับ Cloud SDK สำหรับ Windows หากยังไม่ได้ดำเนินการ ให้ดาวน์โหลดและติดตั้ง Google Cloud SDK สำหรับ Windows ตามที่อธิบายไว้ในคู่มือการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับ Windows ตรวจสอบว่าคุณได้เลือกตัวเลือก PowerShell เมื่อติดตั้ง Cloud SDK

4. การตรวจสอบสิทธิ์
Cloud Tools for PowerShell ใช้ข้อมูลเข้าสู่ระบบและการตั้งค่าที่จัดเก็บไว้ใน Cloud SDK ดังนั้นหากต้องการเริ่มใช้ Cmdlet คุณต้องเข้าสู่ระบบโดยใช้ Cloud SDK ก่อน
การตรวจสอบสิทธิ์ในสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
เริ่มเชลล์ Google Cloud SDK แล้วเรียกใช้คำสั่งต่อไปนี้
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. เรียกใช้ Cmdlet ของ Google Cloud ภายใน PowerShell
เมื่อได้รับการตรวจสอบสิทธิ์แล้ว คุณก็พร้อมที่จะใช้ Cmdlet ของ Google Cloud ภายใน PowerShell ค้นหาและเปิดเชลล์บรรทัดคำสั่ง PowerShell

เรียกใช้ Get-GceInstance cmdlet เพื่อตรวจสอบว่าติดตั้ง Google Cloud cmdlet อย่างถูกต้อง ซึ่งควรแสดงอินสแตนซ์ Compute Engine ที่คุณมีในโปรเจ็กต์

6. สร้างและจัดการอินสแตนซ์ Google Compute Engine
ในส่วนนี้ คุณจะสร้างและจัดการ Google Compute Engine จากภายใน Google Cloud Tools for PowerShell
สร้างการกำหนดค่าอินสแตนซ์
ก่อนสร้างอินสแตนซ์ คุณต้องสร้างการกำหนดค่าอินสแตนซ์ก่อน อย่างน้อยที่สุด คุณต้องระบุชื่อ ประเภทเครื่อง และอิมเมจดิสก์บูทหรือดิสก์บูทที่มีอยู่แล้ว ใช้ 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 ด้วยรหัสโปรเจ็กต์ของคุณเอง
$config | Add-GceInstance -Project PROJECT_ID -Zone europe-west1-b
จัดการอินสแตนซ์
คุณใช้ Get-GceInstance cmdlet เพื่อดึงข้อมูลอินสแตนซ์เครื่องเสมือนของโปรเจ็กต์ได้ เนื่องจากชื่ออินสแตนซ์อาจไม่ซ้ำกันในโปรเจ็กต์หรือโซน คุณจึงระบุพารามิเตอร์โปรเจ็กต์หรือโซนเพื่อจำกัดการค้นหาได้ โดยค่าเริ่มต้น Cmdlet จะใช้ค่าใดก็ตามในการกำหนดค่า Cloud SDK ที่ใช้งานอยู่
$instance = Get-GceInstance "my-vm-1"
คุณตั้งค่าแท็กอินสแตนซ์ ดิสก์ การกำหนดค่าการเข้าถึง และข้อมูลเมตาอื่นๆ ได้หลังจากสร้างอินสแตนซ์ด้วย Cmdlet Set-GceInstance เพิ่มข้อมูลเมตา แล้วนำออกดังนี้
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"
สุดท้ายนี้ เมื่อใช้งานอินสแตนซ์เสร็จแล้ว ให้นำอินสแตนซ์ออกจาก Compute Engine โดยใช้ cmdlet Remove-GceInstance และระบุแท็กที่คุณระบุไว้ก่อนหน้านี้
Get-GceInstance -Project $project |
Where { $_.Tags.Items -contains "to-be-removed" } |
Remove-GceInstance -WhatIf
7. สำรองข้อมูลไปยัง Google Cloud Storage
ในส่วนนี้ของโค้ดแล็บ คุณจะได้สำรองข้อมูลจากเครื่องในพื้นที่ไปยัง Google Cloud Storage โดยใช้ Cloud Tools for PowerShell
สร้างที่เก็บข้อมูล
คุณต้องสร้าง Bucket ก่อนอัปโหลดไฟล์ไปยัง Cloud Storage ใช้ New-GcsBucket cmdlet เพื่อสร้างที่เก็บข้อมูลใหม่
$bucket = "my-gcs-bucket"
New-GcsBucket $bucket
อัปโหลดไฟล์ไปยังที่เก็บข้อมูล
คุณใช้ New-GcsObject เพื่ออัปโหลดไฟล์หรือทั้งโฟลเดอร์ไปยังที่เก็บข้อมูลได้
คุณอัปโหลดเนื้อหาของไฟล์ในเครื่องไปยัง Cloud Storage ได้โดยใช้พารามิเตอร์ -File และระบุเส้นทางไฟล์ หรือจะส่งเนื้อหาของออบเจ็กต์เป็นสตริงผ่านไปป์ไลน์ PowerShell หรือใช้พารามิเตอร์ -Value ก็ได้
เลือกไฟล์ในเครื่องของคุณและอัปโหลดไปยังที่เก็บข้อมูลดังนี้
New-GcsObject -Bucket "my-gcs-bucket" -File "C:\path\to\some\file\hello.txt"
คุณอัปโหลดทั้งไดเรกทอรีจากดิสก์ในเครื่องไปยัง Cloud Storage ได้โดยใช้พารามิเตอร์ -UploadFolder และระบุเส้นทางโฟลเดอร์ หากไม่ต้องการให้อัปโหลดโฟลเดอร์ไปยังรูทของ Bucket ใน Cloud Storage โดยตรง ให้ใช้ -ObjectNamePrefix เพื่อระบุคำนำหน้าที่จะใช้กับออบเจ็กต์ทุกรายการที่อัปโหลด
เลือกโฟลเดอร์ในเครื่องของคุณ แล้วอัปโหลดไปยัง Bucket ดังนี้
New-GcsObject -Bucket "my-gcs-bucket" -Folder "C:\path\to\some\folder"
ข้อมูลการค้นหา
คุณค้นหาข้อมูลได้ด้วย Cmdlet หรือด้วยผู้ให้บริการผ่าน Cmdlet การค้นหาไฟล์ทั่วไป ลองใช้คำสั่งต่อไปนี้กับที่เก็บข้อมูล
Get-GcsObject $bucket | Select Name, Size | Out-GridView
คุณควรเห็นป๊อปอัปตารางกริดที่มีชื่อและขนาด

อ่านข้อมูล
คุณใช้ Cmdlet Read-GcsObject เพื่ออ่านข้อมูลได้ ตัวอย่างเช่น คุณสามารถใช้คำสั่งต่อไปนี้เพื่ออ่านไฟล์ชื่อ hello.txt ไปยังเดสก์ท็อป
Read-GcsObject $bucket "hello.txt" `
-OutFile "$Env:UserProfile\Desktop\hello.txt"
ลบข้อมูล
สุดท้ายนี้ คุณสามารถลบข้อมูลได้โดยใช้ cmdlet Remove-GcsObject ใช้คำสั่งต่อไปนี้เพื่อลบเนื้อหาทั้งหมดในที่เก็บข้อมูล
Get-GcsObject $bucket | Remove-GcsObject
8. ยินดีด้วย
ใน Codelab นี้ คุณได้เรียนรู้วิธีจัดการอินสแตนซ์ Compute Engine และที่เก็บข้อมูล Cloud Storage จาก PowerShell แต่ยังมีอีกมาก นอกจากนี้ คุณยังจัดการทรัพยากร Cloud SQL และ Cloud CDN โดยใช้ PowerShell ได้ด้วย ดูข้อมูลเพิ่มเติมได้จากรายการขั้นตอนถัดไปด้านล่าง
สิ่งที่เราได้พูดถึง
- วิธีติดตั้ง Cloud Tools for PowerShell
- วิธีตรวจสอบสิทธิ์ด้วย Google Cloud SDK
- วิธีสร้างและจัดการ Google Compute Engine จาก PowerShell
- วิธีสำรองข้อมูลไปยัง Google Cloud Storage จาก PowerShell
ขั้นตอนถัดไป
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Tools for PowerShell
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Windows ใน Google Cloud Platform
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ .NET ใน Google Cloud Platform
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ SQL Server ใน Google Cloud Platform
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Tools for Visual Studio