标签: powercli

我应该使用哪个VMware API?

我正在尝试用C#编写一个相当简单的应用程序(或者至少,我认为应该很简单),为所有ESX服务器轮询vCenter,然后为所有VM调度每个ESX服务器.它将收集一些简单的实时统计数据并将其放入数据库中.容易腻,对吗?嗯.

我一直在努力弄清楚我应该使用哪个VMware API,而且我越来越困惑,我越是浏览VMware组织严密的文档站点.我已经阅读了大约60页的vSphere Web Services SDK Programmin指南,但仍然不知道如何获取数据(但我学到了很多关于VMware的字母表汤... yippie).

我的问题是:我应该将哪个VMware API用于专注于收集CPU,内存,网络和硬盘统计信息的只读应用程序?我需要从典型的vCenter +多ESX设置中收集此数据.

编辑:我忘了提到我已经成功编写了一个PowerCLI脚本来完成我所解释的内容,但它对于生产就绪的产品来说太慢而且不稳定(而PowerShell是,imo,一种设计糟糕的脚本语言).我确实有适用于.NETVMware vSphere SDK,但提供的文档至少可以说是简短的.我错过了真正的vSphere SDK for .NET文档吗?

c# vmware esx powercli

38
推荐指数
1
解决办法
3万
查看次数

需要有关网络驱动器的Powershell Copy-Item的帮助

我试图使用命令Copy-Item从远程机器到另一台远程机器:

Copy-Item -Path "\\machine1\abc\123\log 1.zip" -Destination "\\machine2\\c$\Logs\"
Run Code Online (Sandbox Code Playgroud)

我经常得到错误" Cannot find Path "\\machine1\abc\123\log 1.zip"

我可以访问该路径并从那里手动复制.

我以管理员身份打开PowerCLI并运行此脚本......我绝对被困在这里,不知道如何解决它.

powershell copy-item powercli

17
推荐指数
1
解决办法
3万
查看次数

如何在PowerCLI中没有提示的情况下运行disconnect-viserver

如何在使用以下cmdlet断开与PowerCLI中的服务器的连接时禁用提示?帮助文件显示了一个-Confirm选项,我没有使用它,所以我推断,如果没有它,应该没有提示,但我仍然会收到提示?

disconnect-viserver -server MyServer

谢谢

vmware powercli

10
推荐指数
1
解决办法
2万
查看次数

如何递归枚举对象的属性?

出于性能原因,我已经开始重写我的VMware每日报告以使用Get-View,而不是尽可能使用相关的PowerCLI命令.对此的一个小麻烦是返回的视图对象通常具有许多属性,其中许多属于对象本身.某些属性嵌套了四层或更多层.

所以我正在尝试创建一个函数,它将输出一个对象的所有属性,以及该属性的完整路径.然后可以将其传送到Where-Object,以便更轻松地查找特定属性.因此,要在$ v中存储的VMware.Vim.VirtualMachine对象上查找与Host相关的属性,我会输入以下内容:

Get-Properties -Object $v | ? {$_ -match "Host"}
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将返回$ v的所有嵌套属性的列表,其中包含单词"Host".

我怎样才能做到这一点?

powershell powercli

7
推荐指数
1
解决办法
5253
查看次数

Powershell:永久修改路径,“不允许访问请求的注册表。”

我需要将脚本文件夹永久添加到我的 PowerShell 路径(不仅仅是特定会话)。我正在运行以下代码:

[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\scripts", "Machine")
Run Code Online (Sandbox Code Playgroud)

错误如下:

使用“3”个参数调用“SetEnvironmentVariable”时出现异常:“不允许请求的注册表访问。”

如何获得注册表访问权限/修复此问题?

编辑:不确定它是否有帮助,但我在 Windows Server 2012 上使用 PowerCLI(VMware PowerShell API)。

registry powershell path powercli windows-server-2012

6
推荐指数
1
解决办法
1万
查看次数

PowerShell / CLI:具有多个数组的“ Foreach”循环

我有一个PowerCLI脚本,可以关闭VM的电源,更改其内存和CPU,然后重新打开电源。我修改了脚本以利用变量。所有这一切都完美。

我现在正在尝试修改脚本以利用阵列,以便在众多VM之间循环。关闭并打开虚拟机电源的脚本部分运行良好。

我遇到的麻烦是在foreach循环中使用两个数组中的变量。

对于$ vm_name中的每个VM,我需要设置在$ memory_gb中找到的相应内存量。

这就是我所拥有的(它目前为所有VM设置了相同数量的内存(“ 1”))。

$vm_name = @("OMAC-SBXWIN7AJM", "OMAC-SBXWIN2012R2AJM", "OMAC-SBXWIN2008R2AJM")
$memory_gb = 2,4,4

# SET THE VM MEMORY
Write-Host 'NOW SETTING THE VM MEMORY'
foreach ($objItem in $vm_name)
{Set-VM -VM $vm_name -MemoryGB 1 -confirm:$false 
Break
}
Run Code Online (Sandbox Code Playgroud)

http://i.stack.imgur.com/E9hfY.png

...我尝试在第二个foreach循环中嵌套第二个,但无济于事。

如何编写脚本,以便$ vm_name中的每个VM获得在$ memory_gb中找到的相应内存量?

arrays powershell vmware foreach powercli

6
推荐指数
2
解决办法
2万
查看次数

PowerCLI - 通过VM IP查找虚拟机

我试图根据PowerCLI中的IP地址找到特定的VM.我发现这个脚本通过PowerCLI在线抓取VM ipaddress

最初的问题解释了我遇到的问题,答案看起来解决了这些问题,但是当我运行这样的脚本时:

Get-View -ViewType VirtualMachine | Select @{N='IP';E={[string]::Join(',',$_.Guest.net.IPAddress)}}
Run Code Online (Sandbox Code Playgroud)

我得到的是以下输出:

IP
--
Run Code Online (Sandbox Code Playgroud)

就是这样......我错过了指定集群或DC的输入,这对其他人有用吗?

powershell vmware powercli

6
推荐指数
2
解决办法
2万
查看次数

将数组传递给Get-Job

我无法在Start-Job中将数组传递给scriptblock.你能告诉我我可能做错了什么吗?

$bounceBlock = {
param(
[string[]]$list,
[System.Management.Automation.PSCredential]$cred
)
Add-PSSnapin VMware.VimAutomation.Core | Out-Null
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Scope User -InvalidCertificateAction Ignore -Confirm:$false | Out-Null
Connect-VIServer -Server servername -Credential $cred -AllLinked
Get-VM -Name $list
}


if ($targets) {
$activeTargets = $targets | Get-Random -Count $prodTargets.Count
$counter = [pscustomobject] @{Value = 0}
$groupSize = 50
$groups = $activeTargets | Group-Object -Property {[math]::Floor($counter.Value++ / $groupSize)}
$connection = Connect-VIServer -Server servername -Credential $cred -AllLinked
if ($connection -match "servername") {
    foreach ($group in $groups) {
        while ((Get-Job …
Run Code Online (Sandbox Code Playgroud)

arrays powershell powercli

6
推荐指数
1
解决办法
274
查看次数

无论 PowerCLI 的配置如何,由于证书无效,Connect-VIServer 无法连接

正如标题所示,我正在尝试使用 PowerCLI 登录 VMWare vSphere 服务器。即使我跑了Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false -Scope AllUsers,当我尝试连接到服务器时,这就是我得到的:

Connect-VIServer -Server "foobar.server" -User ... -Password ...
Connect-VIServer : 3/30/2020 4:16:46 PM Connect-VIServer                Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: Could not establish secure channel for SSL/TLS with authority 'foobar.server'.
At line:1 char:1
+ Connect-VIServer -Server "foobar.server" -User ... -Passw ... …
Run Code Online (Sandbox Code Playgroud)

powershell vmware powercli vsphere

6
推荐指数
1
解决办法
5335
查看次数

如何在 asp.net mvc 中执行 Powershell 和 Powercli 命令时设置超时

我正在开发一个 ASP.NET MVC Web 应用程序,并且我有以下代码,它定义了服务器列表上的循环,并在我的 ASP.NET MVC 中为每个服务器执行 PowerCli 命令:-

//Start Loop
    var shell = PowerShell.Create();
    var shell2 = PowerShell.Create();
    var shell3 = PowerShell.Create();

    string PsCmd = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterName + "';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword + "';" + System.Environment.NewLine;

    PsCmd = PsCmd + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin -Password $vCenterPassword;" + System.Environment.NewLine;

    PsCmd = PsCmd + "Get-VMHost " + System.Environment.NewLine;

    string PsCmd2 = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc powershell powercli

5
推荐指数
1
解决办法
4570
查看次数