Connect to Windows VMs using PowerShell

This document describes how to connect to a Windows virtual machine (VM) instance by using PowerShell.

Before you begin

  • If you haven't already, set up authentication. Authentication is the process by which your identity is verified for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine as follows.

    Select the tab for how you plan to use the samples on this page:


    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.


    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Connect using PowerShell

If you have a Windows workstation with PowerShell, you can connect to your Windows Server instances through a remote PowerShell session.

  1. If you have not created a username and password on the remote Windows instance yet, create or reset your Windows password.

  2. Add a firewall rule that opens port 5986 on the Google Cloud VPC network where your Windows Server instance is located.

  3. On your local workstation, open the PowerShell terminal.

  4. Optional: You can initialize a variable to hold your user credentials so you do not need to enter them each time you connect to the instance. If you skip this step, you receive a prompt for your username and password later.

    $credentials = Get-Credential
  5. Choose whether you want to establish an interactive Powershell session, or invoke commands on your Windows Server VM remotely.

Establish an interactive PowerShell session

To establish a PowerShell session, run the following command:

Enter-PSSession -ComputerName IP_ADDRESS -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

Replace IP_ADDRESS with the external IP address, DNS name, or Windows computer name for the instance to which you want to connect.

After you connect, the command prompt changes to include the IP address of the remote Windows instance. You can now use the terminal to run PowerShell commands on the remote Windows Server instance.

Invoke commands on your Windows Server VM remotely

As an alternative to the Enter-PSSession command, you can run Invoke-Command with the -ScriptBlock flag to execute PowerShell commands on the remote instance without establishing an interactive session.

Invoke-Command -ComputerName IP_ADDRESS -ScriptBlock { SCRIPT } -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

Replace the following:

  • IP_ADDRESS: the IP address, DNS name, or Windows computer name for the instance to which you want to connect.
  • SCRIPT: one or more commands to run on the remote instance. For example, specify Get-EventLog -log "Windows PowerShell" to get a list of log events.

What's next