跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

虚拟环境开发指南3——VMware PowerCLI


cnhackteam7

推荐的帖子

0x00 前言

在之前的文章《vSphere开发指南1——vSphere Automation API》 和《vSphere开发指南2——vSphere Web Services API》 分别介绍了通过虚拟空间自动化应用程序接口和vSphere Web服务应用程序接口实现vCenter Server同虚拟机交互的方法,本文将要介绍通过PowerCLI实现vCenter Server同虚拟机交互的方法

0x01 简介

本文将要介绍以下内容:

PowerCLI的安装配置

PowerCLI命令

升c调调用PowerCLI的方法

0x02 PowerCLI的安装配置

PowerCLI是用于管理VMware基础架构的PowerShell模块的集合,之前被称作五工具包(Windows版)

官方文档:

https://developer.vmware.com/powercli

1.PowerCLI的安装

(1)在线安装

PowerShell版本最低需要满足PowerShell 5.0

安装命令:

安装模块名称VMware .PowerCLI

(2)离线安装

下载PowerCLI的活力文件,地址如下:

https://code.vmware.com/doc/preview?id=13693

获得PowerShell模块的路径,Powershell命令如下:

$env:PSModulePath

默认可用的一个位置:C:\ Program Files \ windows powershell \ Modules

将PowerCLI的活力文件解压至该目录

解锁文件:

CD C:\ Program Files \ windows powershell \ Modules

get-子项目*-递归|解锁-文件

确认是否安装成功:

获取模块名称VMware .PowerCLI -ListAvailable

2.PowerCLI的使用

支持命令的说明文档:

https://开发商。VMware。com/docs/power CLI/latest/products/vmwarevsphereandvsan/

首先调用连接-服务器连接至vCenter,接下来对虚拟机进行管理,最后需要调用断开连接-服务器断开连接

参照说明文档,同样实现以下功能:

读取虚拟机的配置

查看虚拟机文件

删除虚拟机文件

向虚拟机上传文件

从虚拟机下载文件

在虚拟机中执行命令

具体对应的命令示例如下:

(1)读取虚拟机的配置

连接-视觉服务器-服务器192 .168 .1 .1-协议https-用户管理-密码通行证1-强制

获取虚拟机

断开连接-视觉服务器-服务器192 .168 .1 .1-强制确认:$false

(2)查看虚拟机文件

可通过在虚拟机中执行命令实现

(3)删除虚拟机文件

可通过在虚拟机中执行命令实现

(4)向虚拟机的上传文件

连接-视觉服务器-服务器192 .168 .1 .1-协议https-用户管理-密码通行证1-强制

copy-VMGuestFile-Source c:\ text。txt-Destination c:\ temp \-VM VM-LocalToGuest-guest用户-guest密码传递2

断开连接-视觉服务器-服务器192 .168 .1 .1-强制确认:$false

(5)从虚拟机下载文件

连接-视觉服务器-服务器192 .168 .1 .1-协议https-用户管理-密码通行证1-强制

copy-VMGuestFile-Source c:\ text。txt-Destination c:\ temp \-VM VM-guest to local-guest user user-guest password 2

断开连接-视觉服务器-服务器192 .168 .1 .1-强制确认:$false

(6)在虚拟机中执行命令

虚拟机系统为窗口:

连接-视觉服务器-服务器192 .168 .1 .1-协议https-用户管理-密码通行证1-强制

invoke-VM script-VM VM-script text ' dir '-guest用户管理员-guest密码传递2

断开连接-视觉服务器-服务器192 .168 .1 .1-强制确认:$false

虚拟机系统为Linux:

连接-视觉服务器-服务器192 .168 .1 .1-协议https-用户管理-密码通行证1-强制

invoke-VM script-VM VM2-脚本文本' pwd '-来宾用户root-来宾密码传递2

断开连接-视觉服务器-服务器192 .168 .1 .1-强制确认:$false

注:

实现以上功能不需要完整的PowerCLI,我们可以仅在c:\程序文件\ windows powershell \模块中保留以下文件夹:

VMware .PowerCLI

VMware .精力

VMware .VimAutomation。顺式核心

VMware .VimAutomation。常见

VMware .核心部分

VMware .VimAutomation。软件开发工具包

0x03 C Sharp调用PowerCLI的方法

可供参考的示例代码:

https://github.com/vmspot/vcenter-inventory

代码引用了PowerCLI中的dll,实现了通过vCenter Server对虚拟机资源的访问,是一个界面程序

在实际使用过程中,代码需要做以下修改:

(1)禁用证书认证

添加代码:

使用System.net;

系统. net。servicepointmanager。servercertificatevalidationcallback=((sender,certificate,chain,sslPolicyErrors)=true);

(2)避免错误

错误内容:

错误:向https:///发出超文本传送协议请求时出错。这可能是因为服务器证书没有使用超文本传送协议正确配置106 . HTTPS案中的系统.这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

解决方法:

添加代码:

系统. net。servicepointmanager。安全协议=系统.网。安全协议类型。TLS 12

最终的命令行实现代码如下:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用系统。线程。任务;

使用VMware .精力

使用系统。收藏。专门化;

命名空间控制台应用程序28

{

班级计划

{

静态void Main(string[] args)

{

系统. net。servicepointmanager。servercertificatevalidationcallback=((sender,certificate,chain,sslPolicyErrors)=true);

系统. net。servicepointmanager。安全协议=系统.网。安全协议类型。TLS 12

字符串host=' 192。168 .1 .1 ';

字符串username=' administrator @ VSP here。本地';

字符串密码=' Password123

//创建一个新的精力客户端对象,用于连接到vCenter的软件开发工具包(Software Development Kit)服务

vim Client Client=new VimClientImpl();

客户。连接(' https://' host '/SDK));

客户。登录(用户名、密码);

//获取Windows操作系统虚拟机的列表

NameValueCollection filter=new NameValueCollection();

过滤器。添加('配置. GuestFullName ',' Windows ');

List VM List=new List();

vmlist=客户端findintityviews ((虚拟机的类型),null,filter,null);

//将虚拟机名称填入虚拟机列表框

foreach(虚拟机列表中的虚拟机)

{

控制台WriteLine(' - vm:' vm .姓名);

控制台WriteLine(' HostName:' vm .客人。主机名);

控制台WriteLine(' IpAddress:' vm .客人。IP地址);

控制台WriteLine(' GuestState:' vm .客人。嘉宾状态);

}

//获取ESXi主机列表

List host List=new List();

主机列表=客户端findintityviews(的类型(宿主系统),null,null,null);

//将主机名填充到主机列表框中

foreach(主机列表中的主机系统虚拟机主机)

{

控制台WriteLine(vmhost .姓名);

}

}

}

}

在编译程序前,需要引用以下四个动态链接库:

VimService.dll,位于c:\ Program Files \ windows powershell \ Modules \ VMware .Vim\net45

VMware .装订。Wcf.dll,位于c:\ Program Files \ windows powershell \ Modules \ VMware .Vim\net45

VMware .装订。WsTrust.dll,位于c:\ Program Files \ windows powershell \ Modules \ VMware .VimAutomation。常见\net45

VMware .Vim.dll,位于c:\ Program Files \ windows powershell \ Modules \ VMware .Vim\net45

0x04 小结

本文介绍了通过PowerCLI实现vCenter Server同虚拟机交互的方法,相比于虚拟空间自动化应用程序接口和vSphere Web服务API,使用PowerCLI更加方便,仅需要引入PowerCLI后,通过简单的命令就能够实现同虚拟机的交互

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...