本文为转载,原文地址

http://www.361way.com/powercli-deploy-vmware/4877.html
为方便阅读中文和代码,使用了一键翻译,复制粘贴大法,并且调整了一点可读性

PowerCLI批量创建VMware虚拟机

在现网主机中,经常会有大量虚拟主机创建的需求,负责虚拟化的同事刚好最近有100台主机上线创建的需要求,发现其需要根据模板一台一台的去克隆,感觉很不智能,刚好最近又了解过RHEV的虚拟化,在RHEV中有池的概念,也可以批量创建。这里也找下VMware批量创建的方法。网上找到的工具是powercli,需要安装在vcenter client主机上。文章的内容如下(懒得译这来了):

非常规环境的大小范围非常大;从小型企业或具有几个VM的测试实验室中的一台物理服务器,到具有数百或数千个物理服务器和看似无限VM的大型企业。无论您的环境大小如何,作为一名优秀的系统管理员,您都必须以一致的方式配置环境并尽可能合理地进行自动化,这一点很重要。

如果您使用VMware ESX / ESXi虚拟机管理程序和vCenter作为管理软件,那么您已经可以使用许多自动化工具来帮助您使基础架构尽可能平稳地运行。其中包括VMware vSphere PowerCLIVMware vSphere CLI和适用于Perl的 VMware vSphere SDK。在本文中,我将重点介绍VMware vSphere PowerCLI(作为Microsoft Windows PowerShell命令行工具和脚本语言的管理单元提供的自动化工具),以及任何系统管理员可以启动其虚拟基础结构自动化的10种方法。 。

入门
正如我刚才提到的,vSphere PowerCLI是作为Microsoft Windows PowerShell的管理单元提供的,因此要使用它,您需要:

.NET Framework 2.0 SP1
Windows PowerShell 1.0或2.0

注意
如果您具有Windows PowerShell 2.0,则建议您安装.NET Framework 3.5 SP1,因为这样您就可以访问内置的PowerShell ISE和cmdlet(例如Out-GridView)。

当然,您应该始终参考VMware网站以获取最新的系统要求。在撰写本文时,PowerCLI
当前处于版本4.0 Update 1中,并且在以下32位和64位平台上受支持:

  • Windows Vista
  • Windows XP SP2
  • Windows 2003 Server SP2

PowerCLI本身将连接并管理

  • VMware ESX 4.0更新1 / vCenter Server 4.0更新1
  • VMware ESX 4.0i
  • VMware ESX 4.0 / vCenter Server 4.0
  • VMware ESX 3.5
  • VMware ESX 3i
  • VMware VirtualCenter 2.5
  • VMware ESX 3.0 / VirtualCenter 2.0

还有一个单独的PowerShell管理单元可用于VMware Update Manager,该工具是VMware vCenter的随附工具,用于集中管理ESX / ESXi主机和来宾虚拟机的修补程序。尽管必须注意这些cmdlet需要VMware vSphere PowerCLI 4.0 Update 1,但此管理单元具有与主要PowerCLI工具类似的系统要求,并且仅适用于VMware Update Manager 4.0 U1。因此,如果您的vCenter是基本4.0版本或更早的版本,则将无法使用它们,并且需要升级。

可以从VMware PowerCLI站点找到并下载上述两组cmdlet ,该站点是使用PowerCLI入门所需的一切的绝佳参考站点。如果您真的遇到问题,论坛上有专家等着您回答任何问题。请记住,当您开始使用时,您的大多数问题很可能已经在这些论坛中得到了回答,而简单的搜索就会找到这些问题的答案。

一旦安装了所有系统要求,即可通过安装程序在桌面上放置的快捷方式轻松访问PowerCLI cmdlet。另外,如果您已经熟悉Windows PowerShell,则可能只想将VMware管理单元添加到自己的会话中。如果不确定如何执行此操作,则可以使用Add-PSSnapin cmdlet使这些cmdlet可用于当前会话,如下所示:

Standard PowerCLI cmdlets PowerCLI cmdlets
Add-PSSnapin VMware.VimAutomation.Core
VMware Update Manager cmdlets
Add-PSSnapin VMware.VumAutomation

对于常规使用,将它们添加到默认的PowerShell配置文件是有意义的,可以通过在PowerShell中输入以下命令来打开它们:

notepad $profile

这将打开一个包含自定义配置的文本文件,该文件将在每次打开PowerShell会话时运行。如果您收到一个错误信息,即配置文件不存在(即尚未创建),则可以通过以下方式简单地创建一个配置文件:

New-Item -Path $profile -ItemType file -Force -Item -Path $profile -ItemType file -Force

打开个人资料后,只需向其添加以下行:

Add-PSSnapin VMware.VimAutomation.Core, VMware.VumAutomation -PSSnapin VMware.VimAutomation.Core, VMware.VumAutomation

开始使用PowerCLI的最后一步是建立与VMware vCenter的连接或与ESX / ESXi主机的直接连接。这在概念上类似于打开vSphere Client并连接到VMware vCenter或直接连接到ESX / ESXi主机。使用Connect-VIServer cmdlet建立与VMware vCenter的连接:

Connect-VIServer vCenterServerName -VIServer vCenterServerName

…或主机(如果直接配置主机):

Connect-VIServer HostServerName - VIServer HostServerName

系统将使用您当前登录的凭据来建立与目标的连接。如有必要,可以使用–Username和–Password参数指定备用凭据。如果当前凭据不足,则可能会通过标准Windows对话框提示您输入更合适的凭据。

启动自动化的10个步骤

现在,您已经配置并连接了VMware自动化工具,是时候看看如何使用它们来尽可能多地使VM维护自动化。如您所见,我已将此启动过程分为几个步骤,以使其易于遵循。这些步骤是单独的独立操作,尽管可以编写脚本以进行强大的组合。总而言之,所有10个步骤将为您提供一些更复杂的自动化的坚实基础。在开始之前,我建议
下载Alan Renouf出色的快速参考指南(PDF),以防万一您想查找我将要讨论的任何cmdlet的详细信息。

1)查看和配置虚拟机
虚拟基础架构放在一起的原因主要是(并且毫不奇怪)要运行虚拟机,因此从Get-VM cmdlet 入手是一个很好的起点,它可以生成VMware vCenter中当前找到的所有VM的简单清单。使用Get-VM cmdlet和标准的PowerShell Select-Object cmdlet,您可以检索感兴趣的特定属性,并使用Export-CSV将数据导出为常用的CSV文件格式,以进行进一步的操作和分发。

Get-VM | Select-Object Name,NumCPU,MemoryMB,PowerState,Host |-VM | Select-Object Name,NumCPU,MemoryMB,PowerState,Host |Export-CSV VMs.csv -NoTypeInformation

其样本结果如下所示:

可以充分利用此cmdlet的另一个示例是,当尝试将VMotion虚拟机从一台ESX主机迁移到另一台ESX主机时,它可以减轻常见的绊脚石(如果您不定期使用VMware,则“到VMotion虚拟机…”表示“使用VMware VMotion将虚拟机实时迁移到另一个物理主机…”)。出于多种原因,可能不允许虚拟机使用VMotion。最常见的原因之一是因为它连接了本地CD-Rom驱动器。以下命令集将遍历所有虚拟机,根据其CD-Rom驱动器的连接状态是否为真对它们进行过滤,并返回有问题的虚拟机的名称:

Get-VM | Where-Object {$_ | Get-CDDrive |Where-Object { $_.ConnectionState.Connected -eq "true"  } } |Select-Object Name

PowerShell的一大优点是直观的可能性,可以逐步建立一组命令来执行越来越复杂的操作。这意味着可以在一个步骤中查看和正确配置VM。在这种情况下,除了获取连接CD-Rom的虚拟机的列表之外,扩展上述命令以自动断开这些CD-Rom的操作非常简单,而不是手动执行该任务。只需使用Set-CDDrive cmdlet更改已找到的任何已连接CD-ROM的连接状态:

Get-VM | Where-Object {$_ | Get-CDDrive |Where-Object { $_.ConnectionState.Connected -eq "true"  } } |Get-CDDrive | Set-CDDrive -Connected $false -Confirm:$false

这只是一个示例,但是现在您知道了如何快速收集所需的数据,因此可以轻松地针对特定设置并快速进行适当的配置。您可以从PowerCLI网站上找到有关哪些cmdlet可用来调整VM设置的更多信息,如前所述。

2)基本能力信息
PowerCLI cmdlet可用于快速概述Virtual Center中存在的主机和VM的数量。每月记录这些数字可能很有用,以便可以随时间跟踪环境的增长。如何查找群集中每个主机的平均VM数量?同样,它是一个有用的数据,可以定期进行记录,以观察达到的合并率并计划未来的容量需求,并提供一个PowerCLI可以帮助您找到的数据。

在下面的代码中,我们检索ESX / ESXi主机和VM并观察它们的数量;请注意,使用$ DefaultVIServer变量,该变量在每次连接到vCenter时都会更新。

对于每个群集中的平均VM数量,我们找到ESX / ESXi主机和VM的总数,并执行一些基本数学运算得出一个数字。请注意使用一些基本的.NET [math] ::舍入代码和按要求格式化输出所需的小数位数(1):

# Total number of hosts
$TotalVMHosts = (Get-VMHost).Count
Write-Host "There are $TotalVMHosts Hosts in $DefaultVIServer"
# Total number of guests
$TotalVMs = (Get-VM).Count
Write-Host "There are $TotalVMs Virtual Machines in $DefaultVIServer"
# Average VMs Per Cluster
$Clusters = Get-Cluster
foreach ($Cluster in $Clusters){$VMHosts = Get-Cluster $Cluster | Get-VMHost$VMs = Get-Cluster $Cluster | Get-VM$AverageVMsPerCluster = [math]::round(($VMs.count / $VMHosts.count), 1)Write-Host "$Cluster has $AverageVMsPerCluster guests per VMware host"
}

3)重新扫描新存储
对于VMware管理员来说,最繁重的任务之一是在配置了额外的SAN Lun之后,使用vSphere Client GUI重新扫描群集中的所有主机以寻找新存储。这将需要单独选择集群中的每台主机,扫描它以寻找新的存储,然后继续移动到下一个主机,直到所有主机都完成为止,这个过程很快就变得令人沮丧。

幸运的是,在vSphere 4.0中,VMware在右键单击群集时添加了一个新选项- 重新扫描数据存储。一旦启动,此任务将遍历群集中的每个主机并扫描新存储。

但是,如果您在环境中运行的是4.0之前的VMware版本,或者您想重新扫描多个群集中的主机,则Get-VMHostStorage cmdlet具有两个有用的参数: –RescanAllHba– RescanVmfs。与Get-ClusterGet-VMHosts cmdlet 结合使用,Get-VMHostStorage可以迅速变得非常强大。例如,以下命令将重新扫描群集1中所有主机上的新存储:

Get-Cluster 'Cluster 1' | Get-VMHost |Get-VMHostStorage -RescanAllHba -RescanVmfs

4)将VMotion虚拟机连接到其他主机
作为虚拟基础架构管理员,您将不时需要通过修补或硬件更换来对主机服务器进行维护。正如我已经提到的,VMwareESX和vCenter中提供了一些出色的VMotion技术,该技术使虚拟机可以从一台物理主机转移到另一台物理主机,而不会导致虚拟机停机。要将所有VM从一台主机移动到另一台主机,请使用以下简单的一个内胆:

Get-VMHost esx01 | Get-VM | Move-VM -Destination (Get-VMHost esx02)

当然,目标主机上可能没有足够的资源来移动所有VM,因此可能希望在多个主机之间更均匀地分配它们。下面的简短脚本将所有可爱的技术打包为一个优雅的步骤,将VMotion将所有虚拟机从群集中的一台主机移动到同一群集中的其他随机主机。

$sourcehostname = (Get-VMHost 'esx01’).name
$clusterhosts = Get-Cluster 'Cluster 1' | Get-VMHost |Where-Object {$_.name -notlike "$sourcehostname"}
$vms = Get-VMHost $sourcehostname | Get-VM
foreach ($vm in $vms){$targethost = $clusterhosts | Get-RandomMove-VM -VM $vm -Destination $targethost
}

首先,源主机的名称将存储在变量$ sourcehostname中。然后,我们检索集群1中的所有主机,从该列表中删除源主机,并将结果存储在$ clusterhosts中。接下来,我们检索源主机上的所有虚拟机,将它们存储在$ vms中,最后循环浏览每个虚拟机,生成一个随机目标主机,然后将VM移至该目标主机。

5)将VMotion虚拟机存储到新的SAN
VMotion技术将虚拟机从一台物理主机迁移到另一台物理主机的方式类似,也可以在虚拟机保持在线状态的同时在数据存储之间移动虚拟机的磁盘,该技术称为Storage VMotion。如果将主机配置为可以查看新旧SAN上的存储,并且有足够的带宽来传输必要的数据,那么即使在不同的SAN之间也可以做到这一点。

假设您已经映射了一个CSV文件,该文件将每个虚拟机的磁盘存储到以下数据存储中:

我们可以使用Import-CSV cmdlet 将数据带入PowerShell会话,然后将其馈入Get-VMMove-VM cmdlet以将这些虚拟机存储到新的SAN上。

$vms = Import-CSV C:\Scripts\SVMotion.csv
foreach ($vm in $vms){Get-VM $vm.name | Move-VM -Datastore $vm.targethostname
}

请注意,Import-CSV cmdlet将采用CSV文件中的列标题并将其作为属性标签启用访问;即对于第2行,$ vm.nameServer01,而$ vm.targetdatastoreDatastore1_NEW

进行此类SAN迁移时,您可能希望在正常办公时间之外进行工作,以利用SAN上的低使用期,从而更快地移动数据。因此,为什么不创建Windows Scheduled Task来启动上述脚本并将其安排在所需的时间呢?如果您想变得真正聪明,则可以使用Send-MailMessage PowerShell cmdlet在每次Storage VMotion完成时使它通过电子邮件发送给您。

6)从模板部署虚拟机
部署新的虚拟机是一项简单的任务,特别是如果您已经创建了基本模板并使用来宾自定义功能对新的Windows虚拟机进行系统准备,则尤其如此。但是,如果您要从GUI部署多个虚拟机,那么即使此过程也会很快变得乏味。

让我们举个例子,您以CSV文件的形式提供了对五个新虚拟机的请求:

再次使用Import-CSV读取输入数据,可以轻松部署虚拟机。然后,我们循环浏览虚拟机,并为每个部署获取要使用的模板,主机,数据存储和自定义,然后最终执行New-VM cmdlet并向其提供用于创建每个VM的各种参数:

$vms = Import-CSV C:\Scripts\NewVMs.csv
foreach ($vm in $vms){$Template = Get-Template $vm.template$VMHost = Get-VMHost $vm.host$Datastore = Get-Datastore $vm.datastore$OSCustomization = Get-OSCustomizationSpec $vm.customizationNew-VM -Name $vm.name -OSCustomizationSpec $OSCustomization-Template $Template -VMHost $VMHost -Datastore $Datastore -RunAsync
}

7)配置vSwitch和端口组
在群集中的所有ESX / ESXi主机之间保持网络配置的一致性和准确性至关重要。对于像VMotion这样的技术来说尤其如此,该技术需要在源主机和目标主机上进行相同配置的联网,以使虚拟机能够在它们之间进行传输。在企业环境中,通过不同vSwitch上的多个端口组提供多个VLAN是非常普遍的。因此,在将新的ESX / ESXi主机部署到群集中时,可能需要大量的手动网络配置,这很容易导致犯错,并且管理员非常无聊。

为了解决这个问题,VMware在vSphere 4.0中引入了一些新技术,称为Host Profiles。但是,这仅适用于已购买Enterprise Plus许可的客户。著名的PowerCLI社区专家Alan Renouf 通过他的博客提供了一个解决此问题的简单替代方案(而不是在此处复制脚本,我建议您在这里完成后再看一下他的博客。我将在此处提供链接)本文的结尾)。这个简短的脚本将提示管理员输入源主机和目标主机,从源主机复制网络配置并将其应用于目标。简单但非常有效,并且节省大量时间;无需使用主机配置文件。

8)配置NTP时间服务器
ESX / ESXi主机之间保持一致配置的另一项是用于保留时间的NTP服务器。无论是在新主机上进行设置还是在所有主机上进行更改,使用PowerCLI都可以轻松实现。要将NTP服务器添加到先前未配置的新主机esx01中,请使用:

Get-VMHost esx01 | Add-VMHostNtpServer -NtpServer ntpservername

或者首先清除现有的NTP服务器,然后设置新的NTP服务器:

Get-VMHost esx01 | Remove-VMHostNtpServer `-NtpServer (Get-VMHost esx01 | Get-VMHostNtpServer)
Get-VMHost esx01 | Add-VMHostNtpServer -NtpServer ntpservername

9)通过VMware Update Manager修补
如本文开头所述,还有一组其他命令可以与VMware Update Manager结合使用,以帮助自动修补ESX / ESXi主机或VM。在计划补丁程序部署时,可能有必要向管理层提供有关要安装的补丁程序列表的信息。尽管VMware Update Manager具有可用于大多数任务的GUI,但很难从GUI中提取此信息并将其提取为可分发的格式。

下面的代码将找到主机的合规性状态(针对基准进行扫描),然后将该主机所需的修补程序列表导出到CSV文件中:

$ComplianceStatus = Get-Compliance -Entity 'esx01' -Detailed
$ComplianceStatus.NotCompliantPatches |Select-Object Name,IDByVendor,Description,`@{n='Product';e={$_.product |Select-Object -expandproperty Version}},ReleaseDate |Export-Csv patches.csv -NoTypeInformation

或如何使任何新安装的ESX / ESXi主机立即以当前标准补丁程序基准保持最新状态?简单。

检索所需的基准:

$Baseline = Get-Baseline "Current ESX Baseline"

将基准附加到所需的ESX / ESXi主机:

$Baseline | Attach-Baseline -Entity esx01

扫描主机以确定所需的修补程序:

$Baseline | Remediate-Inventory -Entity esx01 -Confirm:$false

这些命令都可以添加到简短脚本中,以在构建过程结束时运行,以确保所有新部署的主机处于所需的补丁程序级别。

10)安排vCheck报告脚本每天运行
先前提到的PowerCLI社区专家Alan Renouf编写了一个惊人的,非常慷慨的,完全免费的PowerShell报告脚本,该脚本可以在vCenter环境中运行,并报告许多常见问题和最佳实践。该报告称为vCheck,可从Alan的Virtu-Al.net网站上获得。这是主动采取主动措施并在问题变得严重之前发现基础结构问题的好方法。

将发现的常见问题包括超过指定天数的快照,未安装VMware Tools的虚拟机以及可用存储空间少于指定数量的数据存储。强烈建议您安排此报告在您的vCenter上运行,并每天通过电子邮件将结果发送给您-您很可能会发现您根本不知道的问题!

摘要
无论规模大小,VMware环境都可以从自动化中受益匪浅。本文向您介绍了其中的一些可能性,以及如何使用它们使您的系统以更一致的方式更好地运行。这样做的好处有两点:发现所有虚拟环境的状态变得容易得多,并且有更多的时间花在从未涉足的项目上。

您不仅会变得积极主动,而且还将有更多时间对此感到满意。PowerCLI使用起来很直观,并且非常简单,可以非常快速地获得真实的结果–如果您还没有这样做,我敦促您尝试一下!

资源资源
VMware工具:

  • ESX / ESXi
  • vSphere PowerCLI
  • vSphere CLI
  • vSphere SDK for Perl
  • Alan Renouf’s vSwitch Script
  • Alan Renouf’s vCheck

在上面的第六步中实现了对主机通过CVS的表格进行批量创建,不过离我想要的还差一些,想的是自动创建后按表格中设置的主机名和IP再配置好相应的主机名和IP。不过实现主机名和IP的自动配置后面再想办法吧,网上也看到了另外一篇部分内容如下:

New-vm -vmhost esx04.vmpros.local -Name FS-SVR01 -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
New-vm -vmhost esx04.vmpros.local -Name FS-SVR02 -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
New-vm -vmhost esx04.vmpros.local -Name FS-SVR03 -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
New-vm -vmhost esx04.vmpros.local -Name FS-SVR04 -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template
New-vm -vmhost esx04.vmpros.local -Name FS-SVR05 -Template WIN2008R2_Template -Datastore datastore2 -OSCustomizationspec WIN2008R2_Template

脚本:(另存为:FileserverDeploy.ps1

-vmhost =目标主机;
-Name =新VM的名称;
-Template:要从其中的模板部署新的VM;
-数据存储:目标数据存储以放置新的虚拟机;
-OSCustomizationspec =要部署新VM的Wich“准备”模板;
具体运行结果如下:

PowerCLI批量创建VMware虚拟机器-中文版(转载)相关推荐

  1. vmrun 批量创建vmware虚拟机

    1 准备模板机 具体步骤如下:  1. 下载镜像安装系统 https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/ 2. 安装完成配置好IP ,关 ...

  2. 在vmware虚拟机器上安装1000gwall(原创)

    写这个主要想大家了解烧录1000gwall的基本步骤,vmware上是模拟环境,如果在实际环境中也时一样的原理,先来让我们来学习一 . 下基本步骤, 1.http://www.1000gwall.co ...

  3. VMware 虚拟器安装kali镜像

    VMware 虚拟器安装kali2021.2 启动 VMware 工作站后,请选择"创建新虚拟机器". 当您有选择权时,请选择虚拟机器配置的"自定义(高级)", ...

  4. PowerCLi 通过vCenter批量创建及管理虚拟交换机到所有esxi主机

    命令行创建及管理虚拟交换机 为虚拟机增加网卡 添加端口组,配置VMkernel 网卡绑定的一些知识 New-VirtualPortGroup 单一端口组参考 New-VMHostNetworkAdap ...

  5. 在VMware Workstation中批量创建上千台虚拟机(上)

    VMware Workstation 是我们经常使用的虚拟机软件,其功能强大,性能较好.大多数用户都会在"图形界面"中创建虚拟机.修改虚拟机配置.添加虚拟机参数,或者使用" ...

  6. VMware workstation批量创建虚拟机和自动化安装操作系统(二)

    一. 简述 在上一篇<VMware workstation批量创建虚拟机和自动化安装操作系统(一)>中,主要介绍了VMware workstation自定义创建虚拟机的过程,和一些其他的有 ...

  7. VMware workstation批量创建虚拟机和自动化安装操作系统(一)

    一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...

  8. VMware下怎么批量创建,克隆,迁移虚拟机

    VMware有属于自己power cli客户端,我们需要下载指定的客户端,才能执行对应的脚本 以下为WIN7上安装vspher power cli的方法: 1.下载并安装PowerShell 3.0以 ...

  9. VMware --- 创建设置虚拟网卡

    VMware --- 创建设置虚拟网卡 2017年12月30日 10:08:29 __静禅__ 阅读数 6532更多 分类专栏: # Linux # 工具 版权声明:本文为博主原创文章,遵循 CC 4 ...

最新文章

  1. 获取jar中的资源文件途径
  2. 谁是2020年最强Python库?年度Top10出炉
  3. Oracle学习:事务的基本概念
  4. 本地日志数据实时接入到hadoop集群的数据接入方案
  5. 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
  6. 关于__getattribute__
  7. matlab 传感器的迟滞,MATLAB PI迟滞模型问题
  8. kali linux conky配置文件,7个美丽的Conky配置为您的Linux桌面 | MOS86
  9. wpf和winform的那点区别
  10. [terry笔记]Oracle10g/11g安装-redhat5.5
  11. python nums函数获取结果记录集有多少行记录_Python数据分析——Pandas数据结构和操作...
  12. ssis 派生列_SSIS脚本组件与派生列
  13. 记一次.net mvc中 RouteAttribute 不起作用
  14. StringUtils,FileUtils,PropertiesUtils,DataBaseUtils
  15. BZOJ 1304: [CQOI2009]叶子的染色
  16. Style transfer系列论文之——Arbitrary Style Transfer in Real-time with Adaptive Instance Normali,ICCV, 2017
  17. uni-app 使用高德地图
  18. JAVAweb之SSH框架
  19. matlab 使用.m文件,matlab 编写M文件(函数)
  20. AndroidStudio有时候调试会一直卡在:starting LLDB server

热门文章

  1. php如何导出xls表,php如何导出excel表格?
  2. Android 优秀开源项目汇总
  3. 使用putty访问本机虚拟机没有响应的问题
  4. 微信小游戏学习日记2
  5. 【数据分析】疫情对美国民众消费的影响研究报告
  6. 国内出版社的不足之处
  7. Java实现导出excel对重复数据进行单元格合并
  8. 从Google Map爬数据
  9. 颈椎病的知识介绍(5)- 预防
  10. Matplotlib还能这么画!(附25个案例详细代码)