Monthly Archives: January 2012

Win7安装Hyper-V管理器

Hyper-V管理器和System Center Virtual Machine Manager(简称SCVMM)是微软服务器产品线里管理Hyper-V服务器的两大神兵利器,IT管理员装逼的不二神器。在管理的服务器较少的情况下,管理员一般喜欢直接远程登陆到Hyper-V服务器上,然后调出当前机器Hyper-V管理器来管理虚拟机。但是服务器多的时候,一台一台登录就略显麻烦。今天撸主给大家介绍直接在Windows 7安装装Hyper-V管理器来同时管理多台Hyper-V服务器。(注: Windows 8下安装Hyper-V管理器的方法和Windows 7不同,使用Windows 8的童鞋请移步Windows 8安装Hyper-V管理器)

首先,我们要先从微软的官网上下载Windows 7远程服务器管理工具,这个工具简称RSAT,是一个Windows更新补丁包,主要作用是在Windows 7上启用远程服务器管理的功能,来远程管理多台Hyper-V服务器。具体步骤如下: Continue reading

在Hyper-V管理器中使用Windows键

最近在Hyper-V上装了几个虚拟机体验Windows 8开发者预览版,发现一个很蛋疼的地方:Windows 8的Metro UI模式里不再有传统的关闭按钮,所以用户只能通过物理设备上的Windows键来回到开始页面。在Hpyer-V管理器里,Windows键只有在全屏模式下才起作用。所以每回我要退出一个Metro应用的时候,总是要在全屏和非全屏之间不停来回切换。

今天才突然发现,Hyper-V管理器是允许用户选择Windows键应用到哪,是当前操作系统或者是Hyper-V管理器里的虚拟机操作系统。打开Hyper-V设置窗口,在键盘一栏有三个选项

  1. 在物理机上使用
  2. 在虚拟机上使用
  3. 仅当全屏幕运行时在虚拟机上使用

#3是默认选项。切换到#2后,就可以直接在虚拟机里用Windows键以及其他的组合键了。

image

Perl打印包含哈希的哈希

在Perl里,有一种很常用的数据结构,哈希里的值是一个新的哈希,比如下面例子

my %hash = (
    foo => {
        id   => 1,
        name => "foo",
    },
    bar => {
        id   => 2,
        name => "bar",
    },
);

如果需要在调试过程打印这类的数据,最简单的方法就是在代码开始加入use Data::Dumper来导入Dumper模块,然后所要做的全部事情就是把哈希的引用传给Dumper就行。

print Dumper(%hash);

结果如下

$VAR1 = {
          'bar' => {
                     'name' => 'bar',
                     'id' => 2
                   },
          'foo' => {
                     'name' => 'foo',
                     'id' => 1
                   }
        };

或者可以直接2次for循环把哈希展开打印:

foreach my $key ( keys %hash ) {
    print "$key: n";
    foreach my $item ( keys %{ $hash{$key} } ) {
        print "  $item: " . $hash{$key}->{$item} . "n";
    }
}

结果如下

bar:
  name: bar
  id: 2
foo:
  name: foo
  id: 1

Perl里的true和false

Perl和其他语言有点不一样,它没有原生的布尔(Bool)型变量。不过,这

简单说,下面的情况在Perl里会被解析成fase:

  • 数字0
  • 字符串0
  • 空字符串
  • 值为undef的变量

其余的情况在Perl里都会被解析成true。

这样其实也很有好处,相同的逻辑,代码量上会精简不少,但额外的代价就是你得记住哪些情况等于true,哪些又是false。

在PowerShell里运行SCVMM 2012 Cmdlets

SCVMM的用户可以通过Cmdlets以命令行的方式来完成所有可以在AdminConsole里能完成的操作。在SCVMM 2008 R2中,我们可以在Powershell里敲以下命令来加载SCVMM SnapIn。

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager

不过这个命令在SCVMM 2012里失效了。在SCVMM 2012,cmdlet被重新设计成了module,所以在SCVMM 2012,我们需要通过Import-Module来加载SCVMM 2012 Cmdlet Module,具体命令如下。

Import-Module "C:Program FilesMicrosoft System Center 2012Virtual Machine ManagerbinpsModulesvirtualmachinemanagervirtualmachinemanager"

如果你的SCVMM 2012不是默认安装的话,请把C:Program FilesMicrosoft System Center 2012换成SCVMM 的实际安装目录。