Perl:如何将WMIC输出捕获到变量中

时间:2013-03-28 10:11:25

标签: perl wmic

我使用下面的代码来获取驱动器,自由空间和驱动器的总空间。

my @pnames = `wmic /node:"IP" /user:"UserName" /password:"password" LogicalDisk Where "DeviceID='H:'" Get DeviceID,FreeSpace,Size`;

print "@pnames";

以上命令显示输出如下:

DeviceID FreeSpace    Size

H:        51664236544  214753832960

如何阅读DeviceID$DriveName变量,FreeSpace$FreeSpaceOnDrive变量,Size$TotalSpace变量?

提前致谢。

2 个答案:

答案 0 :(得分:1)

最好使用split来获取这些值。

我不清楚你的输出中的标题之后是否真的有一个空白行,但如果是,那么你需要

my ($dev_id, $free_space, $size) = split ' ', $pnames[2];

如果没有空行,则只需将split更改为$pnames[1]即可。

答案 1 :(得分:0)

在标量变量中捕获输出并使用正则表达式进行检查,如下所示:

my ($DriveName, $FreeSpaceOnDrive, $TotalSpace);
my $pnames = `wmic /node:"IP" /user:"UserName" /password:"password" LogicalDisk Where "DeviceID='H:'" Get DeviceID,FreeSpace,Size`;

if( $pnames =~ m!\s+([\w:]+)\s+(\d+)\s+(\d+)! ) {
   ($DriveName, $FreeSpaceOnDrive, $TotalSpace) = ($1, $2, $3);
}