batch-file - 通过批处理脚本和网络视图获取 Bitlocker 状态
问题描述
我一直在尝试为我的团队创建一种更简单的方法来获取我们网络上设备的 bitlocker 状态。在这里和其他网站上检查了一堆单独的答案后,我设法拼凑了一个几乎可以工作的批处理脚本,但是它似乎并没有正确地提取条目。代码如下:
@echo off
color a
title BitLocker Checking
:start
cls
setlocal EnableDelayedExpansion
set i=0
for /F %%a in ('net view') do (
set line=%%a
if "!line:~0,2!" equ "\\" (
set /A i+=1
echo [!i!] !line:~2!
set comp[!i!]=!line:~2!
)
)
echo.
echo.
echo Choose a computer.
choice /c 12345678 >nul
set name=!comp[%errorlevel%]!
cls
for /f "tokens=1,2 delims=[]" %%A in ('manage-bde -status -computername %name% ^| find "Conversion Status"') do set derp=%%B
if "%name%"=="" goto start
echo The status of %name% is %derp%
echo.
echo.
echo %derp% | clip
echo. %derp% copyied to clipboard.
echo.
echo Press any key.
pause
goto start
当我单独使用该manage-bde -status -computername %name% | find "Conversion Status"
线路并为其提供计算机名时,它似乎正确地拉动了转换状态行(例如,如果机器上的 bitlocker 已关闭,则“转换状态:完全解密”)。但是,如果留在批处理文件的上下文中,它会输出“计算机名称goeshere 的状态是”,然后是一个空白,就好像它没有将 Find 命令中的数据获取到变量 %B 中一样。
有人有什么建议吗?自从我编写批处理命令以来已经有一段时间了,所以有点生疏。
解决方案
我认为输出中多余的空白会让您感到困惑。在 Win10 命令行上,这对我有用:
for /f "tokens=1,*" %A in ('manage-bde -status -computername %COMPUTERNAME% ^| findstr Conversion') do echo %A %B
导致输出(减去提示噪音):
Conversion Status: Fully Decrypted
Conversion Status: Fully Decrypted
Conversion Status: Fully Decrypted
因此,您需要删除delims=[]
, 更改tokens=1,2
为tokens=1,*
,以及是否使用 find 或 findstr 由您决定。我的偏好是 findstr。
推荐阅读
- java - JVM 在尝试认领打印机时崩溃 JavaPOS EPSON 热敏打印机
- c++ - Windows 服务未在 ASIO 阻塞套接字中停止
- java - 尽管配置了正确的方言,为什么 Hibernate 会导致 SQL 语法错误?
- firebase - 在 Textformfield 中显示来自 Firebase 的文本?
- r - osmda 包没有找到任何对象
- typescript - 如何确定字符串是否是枚举的一部分?
- r - na.fail.default(list(Fe = c(568L, 437L, 599L, 1016L, 670L, 1951L, : 对象中的缺失值
- .net - Traefik 不会路由路径
- javascript - 从网络服务器摄像头录制
- next.js - 使用 index.js 以外的东西作为 next.js 目录中的主页