需要将BitLocker状态输出到txt文件

时间:2015-05-12 17:31:13

标签: powershell

我有一个简单的PowerShell脚本来检查网络上计算机上BitLocker驱动器加密的状态。我希望脚本能够确定文本文件中多台计算机的状态。

到目前为止,我的基本剧本是Nathan Rice帮助的:

$TextFilePath = Read-Host "What is the path to the text file?"
If (Test-Path $TextFilePath) {
    $ComputersArray = Get-Content $TextFilePath
    ForEach ($Computer in $ComputersArray) {
        If (Test-Connection $Computer -Count 1) {
            $ComputerStatus = manage-bde -status -cn "$Computer"
            Write-Host($ComputerStatus)
        } Else {
            Write-Host("$Computer appears to be offline.")
        }
    }
} Else {
    Write-Error "The text file was not found, check the path."
}

我修改了代码,但它只将一个结果写入文本文件,这意味着如果列表中有5台计算机,它只会写入第一台计算机的结果:

$TextFilePath = Read-Host "What is the path to the text file?"
If (Test-Path $TextFilePath){
    $ComputersArray = Get-Content $TextFilePath
    ForEach ($Computer in $ComputersArray) {
        If (Test-Connection $Computer -Count 1) {
            $ComputerStatus = manage-bde -status -cn "$Computer" |
               Out-File -filepath "c:\users\enduser\Bitlocker-Status.txt"
        } Else {
            Write-Host("$Computer appears to be offline.")
        }
    }
} Else {
    Write-Error "The text file was not found, check the path."
}

我希望将每个设备的结果写入列表。

3 个答案:

答案 0 :(得分:3)

创建结果集合。循环之后,将集合写入文件。

$TextFilePath = Read-Host "What is the path to the text file?"
If (Test-Path $TextFilePath){
    $ComputersArray = Get-Content $TextFilePath
    $ComputerStatusCol = @()
ForEach ($Computer in $ComputersArray) {
        If (Test-Connection $Computer -Count 1){
            $ComputerStatus = manage-bde -status -cn "$Computer" 
            $ComputerStatusCol += $ComputerStatus
        } Else {
            Write-Host("$Computer appears to be offline.")
        }
    }
    $ComputerStatusCol | Out-File -filepath "c:\users\enduser\Bitlocker-Status.txt"
} Else {
    Write-Error "The text file was not found, check the path."
}

答案 1 :(得分:2)

您需要将参数-Append添加到Out-File,以便将输出附加到现有内容而不是替换它:

$ComputerStatus = manage-bde -status -cn "$Computer" |
    Out-File -filepath "c:\users\enduser\Bitlocker-Status.txt" -append -force

答案 2 :(得分:0)

易于管理员使用的批处理文件。只需在我的一位客户AD Networks上进行设置即可,就像魅力一样: 设置一个.cdm文件,将其转储到netlogon文件夹中 脚本: echo计算机:%ComputerName%,用户名:%username%-驱动器C的Bitlocker检查:>>“ \ server \ share \ folder \ BitlockerCheck.log” manage-bde -status c:>>“ \ server \ share \ folder \ BitlockerCheck \ BitlockerCheck.log”

确保每个人都可以访问共享路径(域用户)编辑要在其中运行的容器的组策略(永远不要触摸默认域策略,如果您希望每个人都在顶部和名称上创建新策略Bitcloker状态检查)。 转到用户配置-策略-Windows设置-脚本右键单击登录,属性,添加-浏览到\ dcname \ netlogon \ filename.cmd单击确定,大约15分钟后(无需强制gpupdate),该文件将在用户登录时开始填充/ logoff。

在非BitLocker计算机上,它将显示计算机名称和用户,但不包含任何信息。在非常大的网络上可能很麻烦,但是您可以按OU拆分Gp脚本并分隔文件,因为大多数大公司没有所有人在一个容器中。