【发布时间】:2020-02-23 17:42:27
【问题描述】:
在 Lee_Dailey 和 js2010 的帮助下解决了这个问题!谢谢各位!
编辑 我试图弄清楚为什么当它通过 SCCM 部署到一组计算机时会出现误报。我得到的设备不合规,而实际上它们是不合规的。 SCCM 操作员要求我提供脚本的 VB 版本。我正在删除潜在的原因。
我正在尝试将 PowerShell 脚本的功能转换为 VBScript。该脚本检查设备上的 AzureAdPrt 令牌,但挑战在于该命令的输出,因为它在表格中格式化,我只想检查特定值。
我试图将该技术复制到 VBScript,但我没有这方面的经验。
Powershell 代码:
$dsregcmd = dsregcmd /status
$PRTDetails = New-Object -TypeName PSObject
$dsregcmd | Select-String -Pattern " *[A-z]+ : [A-z]+ *" | ForEach-Object {
Add-Member -InputObject $PRTDetails -MemberType NoteProperty -Name (([String]$_).Trim() -split " : ")[0] -Value (([String]$_).Trim() -split " : ")[1]
}
$PRT_Status = ($PRTDetails).AzureAdPrt
IF($PRT_Status -eq 'YES'){
return $True
}ELSE{
return $False
}
VB 代码:
Set oShell = CreateObject ("WScript.Shell")
oShell.run "cmd /c dsregcmd /status"
IF oShell = "AzureAdPrt : YES"
echo $true
ELSE
echo $false
我正在寻找的是 VBScript,如果 AzureAdPrt 等于 YES,则返回 $true,否则返回 $False。
【问题讨论】:
-
你需要解析
dsregcmd的输出。现在您的代码与 entire 输出进行比较,而不是您关心的部分。所以...将该输出捕获到 $Var,研究模式,并将其应用到您的 VBScript 代码中。 -
你为什么要这样做?如果不出意外,VBScript 可以调用 PoSh。但我怀疑您正在解决由另一个问题引起的问题。你的问题背后的原因是什么?
-
您是否有某种原因要将其转换为 VBS 而不是仅作为 PS 保留?我的经验是,PS 在代码上通常比 VBS 更灵活,更少“尴尬”,MS 强烈主张将 VBS 转换为 PS,而不是相反。
-
@Lee_Dailey - 感谢您的提示!我更喜欢 PS,但我试图弄清楚为什么当它通过 SCCM 部署到一组计算机时会出现误报。我得到的设备不合规,而实际上它们是不合规的。 SCCM 操作员要求我提供脚本的 VB 版本。我正在删除潜在的原因。
-
vbscript 中的正则表达式:robvanderwoude.com/vbstech_regexp.php
标签: powershell vbscript conditional-statements