Skip to main content

整合PowerCLI与PowerShell

早先我有写一篇文章关于如何手工整合PowerCLI和PowerShell。最近重装了系统,不得不再做一次。以前我习惯用PowerGUI写脚本,但不知道怎么搞的PowerGUI总是丢失菜单界面,这困扰了我很久一直没办法完全解决,所以这次我在想能不能把PowerCLI和PowerShell整合了一劳永逸,毕竟内置的好用一些啊。



其实我需要的很简单,按下TAB键可以自动补全PowerCLI命令,人年纪大了实在记不住那么多命令行。搜了一下,找到一篇不错的文章 how to add PowerCLI to PowerShell ISE。但是我希望以后重装系统后能够快速整合,不用鼠标一个一个点。以下是我用来整合PowerCLI和PowerShell的命令行,希望对大家有用。:-)

第一步,以下命令必须返回“false”,否则你需要备份PowerShell的profile文件。

Test-Path $profile


第二步,创建PowerShell的profile文件并且检验是否创建成功,返回”true"表示成功。

New-Item -Path $profile -type file -force | Out-Null
Test-Path $profile


第三步,添加PowerCLI到PowerShell中。

Add-Content -Path $profile -value "# Load Windows PowerShell cmdlets for managing vSphere `r`nAdd-PsSnapin VMware.VimAutomation.Core -ea SilentlyContinue"


注意:


  1. 我只在Windows 10上测试过。Windows 7或者早前版本可能不一样。

  2. 整合后需要重启机器,否则运行PowerShell时会出现如下错误。
    A provider is not available for the following required component service: CisCoreService

Popular posts from this blog

Connect-NsxtServer shows "Unable to connect to the remote server"

When you run Connect-NsxtServer in the PowerCLI, it may show "Unable to connect to the remote server".  Because the error message is a little bit confusing with other login issues. It's not easy to troubleshoot. The actual reason is the NSX-T uses a self-signed certificate, and the PowerCLI cannot accept the certificate automatically. The fix is super easy. You need to set the PowerCLI to ignore the invalid certificate with the following command: Set-PowerCLIConfiguration -Scope User -InvalidCertificateAction:Ignore -Confirm:$false

Setup Terraform and Ansible for Windows provisionon CentOS

Provisioning Windows machines with Terraform is easy. Configuring Windows machines with Ansible is also not complex. However, it's a little bit challenging to combine them. The following steps are some ideas about handling a Windows machine from provisioning to post configuration without modifying the winrm configuration on the guest operating system. Install required repos for yum. yum -y install https://repo.ius.io/ius-release-el7.rpm yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum -y install epel-release yum -y install yum-utils yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo Install  Terraform . sudo yum -y install terraform Install  Ansible . sudo yum -y install ansible Install  Kerberos . yum -y install gcc python-devel krb5-devel krb5-libs krb5-workstation

How to List All Users in Terraform Cloud

Terraform has a rich API. However, the API documentation does not mention how to list all users. We can leverage the organization membership API and the PowerShell command  Invoke-RestMethod  to get a user list. 1. Create an organization token in Terraform Cloud. 2. Create the token variable ( $Token ) in PowerShell. $Token = "abcde" 3. Create the API parameters variable in PowerShell. $params = @{ Uri = "https://app.terraform.io/api/v2/organizations/ZHENGWU/organization-memberships?page%5Bsize%5D=100" Authentication = "Bearer" Token = $Token ContentType = "application/vnd.api+json" } Note: You need to replace ZHENGWU with your own organization name. And I used 100 at the end of the URI to retrieve the first 100 users. It can be any number.  4. Retrieve the API return and list the user's email address. $Test = Invoke-RestMethod @params $Test.data.attributes.email