我的脚本在基于英语的计算机上运行得非常好,但在其他语言中却没有。
该脚本获取计算机Bitlocker的恢复密钥,然后将其备份到Active Directory中。
我发现我需要更新" 数字密码"在我的相应语言中的值,但这不会改变空白变量NumericalKeyID的输出...
Option Explicit
Dim strNumericalKeyID
Dim strManageBDE,strManageBDE2
Dim oShell
Dim StrPath
Dim StdOut, strCommand
Dim Result, TPM, strLine
Dim Flag, NumericalKeyID
Set oShell = CreateObject("WSCript.Shell")
'====================================================================================
'This section looks for the Bitlocker Key Numerical ID
strManageBDE = "Manage-BDE.exe -protectors -get c:" 'Bitlocker command to gather the ID
Flag = False
Set Result = oShell.Exec(strManageBDE)'sees the results and places it in Result
Set TPM = Result.StdOut 'Sets the variable TPM to the output if the strManageBDe command
While Not TPM.AtEndOfStream
strLine = TPM.ReadLine 'Sets strLine
If InStr(strLine, "Numerical Password:") Then ' This section looks for the Numerical Password
Flag = True
End If
If Flag = True Then
If InStr(strLine, "ID:") Then 'This section looks for the ID
NumericalKeyID = Trim(strLine)' This section trims the empty spaces from the ID {} line
NumericalKeyID = Right(NumericalKeyID, Len(NumericalKeyID)-4)
Flag = False 'Stops the other lines from being collected
End If
End If
Wend
strManageBDE2 = "Manage-BDE.exe -protectors -adbackup C: -ID " & NumericalKeyID
oShell.Run strManageBDE2, 0, True 'Runs the Manage-bde command to move the numerical ID to AD.
我确定这很愚蠢,但我的剧本知识很新。
非常感谢你! :)
英文版manage-bde的输出:
答案 0 :(得分:0)
我讨厌使用正则表达式建议解决方案(Obligatory XKCD link) 我认为这可能是你最好的选择
这样的事情可以解决问题
.*ID:.*{(.*)}.*
为你分解
.* - Match any character
ID: - Match ID:
.* - Match any character
{ - match {
( - remember anything between this and the next )
} - match }
.* - Match any character
如果您不熟悉VBScript对正则表达式的支持,则此链接非常好Regular Expression - VBScript
Dim myRegExp, myMatches id
Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = ".*ID:.*{(.*)}.*"
Set myMatches = myRegExp.Execute(subjectString)
id = myMatches(0).SubMatches(0)
使用此解决方案的警告
如果您不熟悉正则表达式Expresso是一个有用的测试/学习工具
答案 1 :(得分:0)
谢谢大卫。
我只有一个备份保护器,还有一个驱动器。
正如我所说的那样,当计算机的语言是英语时,一切都很完美,但是因为我有一种语言用一些特殊字符替换“数字密码”的语言,如“锓ñ” “它将无法识别,变量将获得空白值。
也许是因为vbscript这种方式不能处理unicode。
为了说明我的说法,这里是与我的第一篇文章相同的屏幕截图,但是用法语: