我使用下面的代码来获取驱动器,自由空间和驱动器的总空间。
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
变量?
提前致谢。
答案 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);
}