积极答复者
powershell 初始化刚挂载磁盘

问题
答案
-
Hi Tank,
这部分脚本代码是来自这篇文档:Use PowerShell to Initialize Raw Disks and to Partition and Format Volumes,文档中对于该脚本已给予了详细解释。
我给您提供的脚本适用于一次处理多个磁盘初始化操作,若您只需要一次初始化一个磁盘可以直接使用文档提供的脚本。
此处我再稍作解释:
> $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number 获取未初始化的数据磁盘,未初始化的数据磁盘 partitionstyle 为 raw。 > $letters = 70..89 | ForEach-Object { ([char]$_) } Letters 为 F~Y的字母,用于初始化磁盘驱动器的名称 >foreach($d in $disks) {… …} 循环处理各个未初始化的磁盘卷 >Initialize-Disk -PartitionStyle MBR -PassThru | 初始化磁盘,分区类型选择为 MBR,返回磁盘对象用于管道操作 >New-Partition -UseMaximumSize -DriveLetter $driveLetter | 对初始化后的磁盘进行分区,指定卷的名称 >Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force 格式化该卷,文件系统使用 NTFS,根据提供的$labels设置改卷名称
另外在执行该脚本时需要先远程到您的虚拟机,该步骤此前没有给您写在脚本中,此处给您补上,完整脚本如下:
$securePassword = ConvertTo-SecureString <your_password_for_remote_vm> -AsPlainText -force $cred = New-Object System.Management.Automation.PsCredential(<your_vm_name\your_user_name>,$securePassword) $SessionOption = New-PSSessionOption -SkipCACheck $Session = New-PSSession -ComputerName <your_vmname.chinacloudapp.cn > -Credential $cred -Port <your_powershell_endpoint> -UseSSL -SessionOption $SessionOption Invoke-command -session $Session -ScriptBlock { $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number $letters = 70..89 | ForEach-Object { ([char]$_) } $count = 0 $labels = @("data1","data2") foreach($d in $disks) { $driveLetter = $letters[$count].ToString() $d | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -DriveLetter $driveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force $count++ } }
我已给您测试过,脚本是可行的:
执行脚本前,在我的虚拟机中有两个未初始化的磁盘:
脚本执行后,回显信息显示磁盘已初始化并分区:
远程到虚拟机中,可以看到磁盘已被初始化:
MSDN 社区技术支持
如果该回复解决了您的问题,请及时点击“标记为答案”选项,如未解决请选择“取消标记为答案”,这会有利于其他人员来阅读您的帖子。如果您对MSDN 技术支持有任何的建议或意见,请随时联系 MSDNFSF@microsoft.com。
- 已编辑 David TangMicrosoft contingent staff, Moderator 2017年1月23日 7:15 Update Format.
- 已标记为答案 Tank Tou 2017年2月12日 17:49
全部回复
-
Hi Tank,
> WindowsVM的脚本加载已经完成,但初始化的命令未能编写
以下脚本可以帮助您完成windows 附加新磁盘的初始化操作:
$disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number $letters = 70..89 | ForEach-Object { ([char]$_) } $count = 0 $labels = @("data1","data2") foreach($d in $disks) { $driveLetter = $letters[$count].ToString() $d | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -DriveLetter $driveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] ` -Confirm:$false -Force $count++ }
附加数据磁盘的脚本供您参考: PowerShell + Azure Automation : Add Disk to VM
> LinuxVM的脚本还在研究中
关于Linux 如何附加磁盘请参考:如何将数据磁盘附加到 Linux 虚拟机
希望对您有帮助,如您有任何其他疑问,欢迎继续发帖提问。
MSDN 社区技术支持<br/> 如果该回复解决了您的问题,请及时点击“标记为答案”选项,如未解决请选择“取消标记为答案”,这会有利于其他人员来阅读您的帖子。如果您对MSDN 技术支持有任何的建议或意见,请随时联系 <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>。
-
Hi Tank,
这部分脚本代码是来自这篇文档:Use PowerShell to Initialize Raw Disks and to Partition and Format Volumes,文档中对于该脚本已给予了详细解释。
我给您提供的脚本适用于一次处理多个磁盘初始化操作,若您只需要一次初始化一个磁盘可以直接使用文档提供的脚本。
此处我再稍作解释:
> $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number 获取未初始化的数据磁盘,未初始化的数据磁盘 partitionstyle 为 raw。 > $letters = 70..89 | ForEach-Object { ([char]$_) } Letters 为 F~Y的字母,用于初始化磁盘驱动器的名称 >foreach($d in $disks) {… …} 循环处理各个未初始化的磁盘卷 >Initialize-Disk -PartitionStyle MBR -PassThru | 初始化磁盘,分区类型选择为 MBR,返回磁盘对象用于管道操作 >New-Partition -UseMaximumSize -DriveLetter $driveLetter | 对初始化后的磁盘进行分区,指定卷的名称 >Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force 格式化该卷,文件系统使用 NTFS,根据提供的$labels设置改卷名称
另外在执行该脚本时需要先远程到您的虚拟机,该步骤此前没有给您写在脚本中,此处给您补上,完整脚本如下:
$securePassword = ConvertTo-SecureString <your_password_for_remote_vm> -AsPlainText -force $cred = New-Object System.Management.Automation.PsCredential(<your_vm_name\your_user_name>,$securePassword) $SessionOption = New-PSSessionOption -SkipCACheck $Session = New-PSSession -ComputerName <your_vmname.chinacloudapp.cn > -Credential $cred -Port <your_powershell_endpoint> -UseSSL -SessionOption $SessionOption Invoke-command -session $Session -ScriptBlock { $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number $letters = 70..89 | ForEach-Object { ([char]$_) } $count = 0 $labels = @("data1","data2") foreach($d in $disks) { $driveLetter = $letters[$count].ToString() $d | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -DriveLetter $driveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force $count++ } }
我已给您测试过,脚本是可行的:
执行脚本前,在我的虚拟机中有两个未初始化的磁盘:
脚本执行后,回显信息显示磁盘已初始化并分区:
远程到虚拟机中,可以看到磁盘已被初始化:
MSDN 社区技术支持
如果该回复解决了您的问题,请及时点击“标记为答案”选项,如未解决请选择“取消标记为答案”,这会有利于其他人员来阅读您的帖子。如果您对MSDN 技术支持有任何的建议或意见,请随时联系 MSDNFSF@microsoft.com。
- 已编辑 David TangMicrosoft contingent staff, Moderator 2017年1月23日 7:15 Update Format.
- 已标记为答案 Tank Tou 2017年2月12日 17:49