vSphere PowerCLI cmdlet을 PS1 파일에서 실행할 수 있습니까?

vSphere PowerCLI cmdlet을 PS1 파일에서 실행할 수 있습니까?

다음과 같은 관리 스크립트를 작성하려고 합니다.

  • vSphere에서 VM 삭제
  • VM의 DNS 항목 삭제
  • Windows DHCP 서버를 사용하여 VM의 IP 주소를 해제합니다.

vSphere의 PowerCLI를 통해 첫 번째 항목을 수행할 수 있고, PowerShell " "을 통해 마지막 2개 항목을 수행할 수 있습니다 Cmdlets. 게다가 이것을 파일 Cmdlets안에 넣고 *.ps1쉘에서 파일을 실행할 수도 있습니다.

초기 연구에 따르면 PowerCLI는 PowerShell을 래핑/확장하며 기본적으로 자체 vSphere 중심 .NET으로 구성되어 있습니다 Cmdlets. 그래서 궁금합니다. Cmdlets다른 PowerShell 코드와 함께 PowerCLI "코드"( 등)를 PS1 파일 안에 넣고 일반 PS1처럼 실행할 수 있습니까?

답변1

PowerCLI "코드"(Cmdlet 등)를 다른 PowerShell 코드와 함께 PS1 파일 안에 넣고 일반 PS1처럼 실행할 수 있나요?

예. 그러나 예상대로 작동하려면(PowerCLI 콘솔을 사용할 때처럼) 환경을 초기화해야 합니다. 바로가기 "VMware vSphere PowerCLI.lnk"를 검토하여 이 작업이 수행되는 방법을 확인할 수 있습니다. 대상은 다음과 같습니다.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

이를 분석하면 다음과 같습니다.

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Powershell 바이너리

  • -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"

-PSConsole지정된 vim.psc1 콘솔을 로드하는 의 약어입니다 .

  • -noe

의 줄임말로 -NoExit, 시작 명령을 실행한 후에 닫지 마세요.

  • -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

의 약어입니다 -Command. 점은 [참고 경로는 이스케이프 인용됨] 파일 초기화-PowerCLIEnvironment.ps1을 세션에 소싱합니다.

이를 압축하여 초기화를 .ps1 파일에 넣을 수 있습니다. 이 스텁 예제를 시작하면 됩니다.

# This is the main magic.
Add-PSSnapin VMware.VimAutomation.Core

# Dot source the PowerCLI init script
. 'C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1'

# We're up and running with "PowerCLI", do some VM stuff.
Connect-VIServer vcenter-01
Get-VM
...

관련 정보