编辑:我意识到我可能发布了错误的地方,可能最好将其发送到serverfault,对不起,如果是这样的话。
我正在研究磁盘恢复操作的自动化,并且在其中间我需要为包含Windows系统的已恢复卷分配一个字母,以允许修改它的内容(驱动程序)注射等)。
在机器上我有2个磁盘:磁盘0是恢复机器的系统磁盘,磁盘1是恢复机器的系统磁盘,其上有两个分区,系统保留和标准分区。
我想将驱动器号E分配给 磁盘1分区Windows。这样做之后手动:
Get-Partition Disk Number: 1 PartitionNumber DriveLetter Offset Size Type --------------- ----------- ------ ---- ---- 1 1048576 350 MB IFS 2 E 368050176 29.66 GB IFS Disk Number: 0 PartitionNumber DriveLetter Offset Size Type --------------- ----------- ------ ---- ---- 1 1048576 350 MB IFS 2 C 368050176 49.66 GB IFS
我尝试了什么:
<?php
namespace App\Helpers\Common;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Carbon\Carbon;
class FileLogger extends Logger
{
protected $path = null;
public function __construct($name, $level = 'DEBUG', $path = null, array $processors = [ ])
{
$tz = static::$timezone = new \DateTimeZone(config('app.timezone'));
$handlers = [ ];
parent::__construct($name, $handlers, $processors);
$dtObj = Carbon::now($tz);
if ( ! $path) {
$path = $name . '-' . $dtObj->format('Y-m-d') . '.log';
}
$path = $this->path = storage_path('logs/' . $path);
$this->addStream($path, $level);
return $this;
}
public static function getLevelNum($level)
{
return static::getLevels()[ strtoupper($level) ];
}
public function addStream($path, $level = 'DEBUG')
{
if ( ! is_int($level)) {
$level = static::getLevelNum($level);
}
$this->pushHandler(new StreamHandler($path, $level));
return $this;
}
public function addRecord($level, $message, array $context = array())
{
if ( ! is_int($level)) {
$level = static::getLevelNum($level);
}
parent::addRecord($level, $message, $context);
return $this;
}
}
这不起作用,因为Where对象条件没有检测到基本类型。
我想也许我可以尝试检测最大的分区,因为磁盘上只会有两个分区。但是我怎么也不知道。
答案 0 :(得分:3)
如果您想获得最大的分区,可以在size属性上使用Sort-Object,类型为uint64 - 因此您不必担心根据字符串获取错误的分区排序MB / GB - 然后使用Select-Object获取第一个结果,如下所示:
Get-Partition -DiskNumber 1 | Sort-Object "Size" -Descending | Select-object -First 1 | Set-Partition -NewDriveLetter E
答案 1 :(得分:3)
这将选择磁盘1上的最大分区:
Get-Partition -DiskNumber 1 | sort-object -property size -descending | select -first 1
希望有所帮助