首页 > 解决方案 > 检查所有本地分区号并在每个分区上开始加密

问题描述

有谁知道如何检查远程主机上的所有本地分区(字母)并使用 powershell 在每个分区上开始加密。我在想类似的东西,但我做错了什么?我的代码:

$disk=Get-WmiObject -Class Win32_logicaldisk -Filter "DriveType = '3'" | Select DeviceID

ForEach($letter in $disk){

Read-Host -Prompt “Criptam” + $letter + "?" 
$let = $letter + ":"
manage-bde.exe -on $let -recoverypassword -skiphardwaretest 

标签: powershell

解决方案


尝试这个:

Get-WmiObject -ComputerName Server_Name -Class Win32_logicaldisk -Filter "DriveType = '3'" | ForEach {
  Read-Host -prompt ('Criptam' + $letter + '?')
  $letter = "$($_.DeviceId):"
  & "manage-bde.exe" -on $let -recoverypassword -skiphardwaretest
}

或者

$disk=Get-WmiObject -Class Win32_logicaldisk -Filter "DriveType = '3'" | Select -ExpandProperty DeviceID

ForEach($letter in $disk){

Read-Host -Prompt ("Criptam"+ $letter + "?")
$let = $letter + ":"
manage-bde.exe -on $let -recoverypassword -skiphardwaretest 
} 
  • 在Get-WmiObject中添加-ComputerName参数来指定远程主机的名称

  • Get-WmiObject 的管道输出到 ForEach

  • 修复了 Read-Host 部分,提示字符串在没有括号的情况下被破坏

  • 改变了 $let

  • 使用 (&) 运算符运行 manage-bed.exe

最大的错误是 Select-Object 你得到的驱动器列表不是一个数组,这可以通过 -ExpandProperty 来完成,它将属性选择为没有标题的数组。


推荐阅读