我正在开发 PowerShell 模块库,我们希望在我们的环境中使用它来简化一些编码。 我有一个读取注册表值的小模块,我想执行以下操作 模块读取 DWORD 值,但它不仅应该显示十进制值,还应该显示十六进制值
Log "Operating System UBR: $(GetDWORDValue "HKLM" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "UBR" "64")"
Log "Operating System UBR (hex): ($(GetDWORDValue "HKLM" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "UBR" "64")).ToString('X')"
输出 [06/21/2024 14:15:34 - TemplateScript.ps1] 操作系统 UBR:3737 [06/21/2024 14:15:34 - TemplateScript.ps1] 操作系统 UBR(十六进制):(3737).ToString('X') 粗体项目不正确,应显示“E99”
我尝试过各种组合:
这基本上是使用 Add-Content 的模块,并将我传递的文本作为参数。
日志模块
function Log {
param (
[string]$sText
)
$logFolderPath = "C:\Logs"
if ($sAppName -eq $null) {
$sAppName = $scriptName
}
$logFilePath = Join-Path -Path $logFolderPath -ChildPath "$sAppName.log"
if (-not (Test-Path -Path $logFolderPath)) {
New-Item -Path $logFolderPath -ItemType Directory
}
$sCurTime = Get-Date -Format "MM/dd/yyyy HH:mm:ss"
$logEntry = "[$sCurTime - $scriptName] $sText"
Add-Content -Path $logFilePath -Value $logEntry
}
欢迎任何想法/建议 谢谢!
您需要将整个
(...).ToString('X')
调用包含在子表达式中 $(...)
:
Log "Operating System UBR (hex): $((GetDWORDValue "HKLM" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "UBR" "64").ToString('X'))"