如何使用PowerShell远程扩展虚拟机的分区

时间:2018-02-21 16:58:09

标签: powershell powershell-v4.0 powershell-remoting

我试图编写一个Powershell脚本来远程扩展虚拟机的分区。我已将1gb添加到现有的C驱动器上,这将使其在VDI上达到81GB但我故意没有扩展它,因为我想通过这个脚本来实现它。

我想做错的任何想法,因为我想在列表位于文本文件中的组计算机上运行它:

$servers = Get-Content 'C:\MININT\Computers.txt'
$GlobalResults = @()
$ConvertToGB = ( 1024 * 1024 * 1024 )
ForEach ($server in $servers)
{
    $disk = get-wmiobject win32_LogicalDisk -ComputerName $server -Filter "DeviceID='C:'" | Select-object size,Freespace    
$server + "," + ($disk.size / $ConvertToGB) + "," + ($disk.Freespace / $ConvertToGB)    
$MaxSize =  (Get-PartitionSupportedSize -DriveLetter c).sizeMax
    Resize-Partition -DriveLetter c -Size $MaxSize
}

任何协助都会非常感激,因为我是初学者。

亲切的问候

2 个答案:

答案 0 :(得分:0)

您可以使用invoke-commandhttp://www.computerperformance.co.uk/powershell/powershell_invoke.htm)执行远程操作,当您要在该远程计算机上使用本地变量时,必须在其中添加“using:”(并通过简单地“分割”来计算GB到GB“)

因为我现在无法测试 - 以下是“它应该如何工作”(如:未经测试但我希望你能得到这个想法)

$servers = Get-Content 'C:\MININT\Computers.txt'
ForEach ($server in $servers)
{      
    $MaxSize = (invoke-command -ComputerName $server -ScriptBlock { Get-PartitionSupportedSize -DriveLetter c }).sizeMax
    invoke-command -ComputerName $server -ScriptBlock {Resize-Partition -DriveLetter c -Size $using:MaxSize}
}

答案 1 :(得分:0)

一切都可以在远程机器上完成:

$Svr = Get-Content 'C:\MININT\Computers.txt'

$ScriptBlock = {
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).Sizemax

Resize-Partition -DriveLetter C -Size $MaxSize
}

Invoke-Command -ComputerName $Svr -ScriptBlock $ScriptBlock