簡體   English   中英

如何使用 PowerCLI 和 PowerShell 遠程卸載應用程序

[英]How to remote uninstall applications with PowerCLI and PowerShell

我創建了這個腳本來從一組 Vm 中遠程卸載 VMware 工具。

Get-Module -ListAvailable PowerCLI* | Import-Module

Connect-VIServer -Server 192.168.42.218 -User administrator@vsphere.local -Password mypassword

$GetVm=(Get-VM).where{$_.ExtensionData.Config.GuestFullname -match 'Windows'} | select -expand Name | Out-File -FilePath .\vms.txt

$source = "vms.txt"

$vms = Get-Content -Path $source

foreach ($vmName in $vms) {
$vm = Get-VM -Name $vmName

$app = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name LIKE '%VMware%'"  -ComputerName $vmName


    $app.Uninstall()
    }

我收到如下所示的錯誤,以防萬一我打開所有虛擬機的防火牆但仍然出現此錯誤。 我還可以使用相同的循環啟動和關閉遠程虛擬機。 這是錯誤:

Get-WmiObject : The RPC server is unavailable.
At C:\work\unins1.ps1:15 char:8
+ $app = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name L ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

You cannot call a method on a null-valued expression.
At C:\work\unins1.ps1:18 char:5
+ $app.Uninstall()
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

我需要做些什么來讓它提示我輸入 vm 憑據嗎? 所有服務都在虛擬機上運行

由於您已禁用防火牆,我猜您傳遞給 Get-WmiObject 的 VM 名稱無法由 DNS 解析,這反過來又會導致 RPC 服務器不可用錯誤。 一個簡單的檢查方法是將 VM 的 DNS 名稱手動輸入到 Get-WmiObject 行並檢查它是否有效。 有關詳細信息,請參閱此處: Get-WmiObject:RPC 服務器不可用。 (來自 HRESULT 的異常:0x800706BA)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM