PowerShell-检查.ini文件,记录问题

时间:2019-04-18 16:49:02

标签: powershell ini

两个VNC服务器强制关闭MS登录组时遇到麻烦。我正在对问题进行故障排除,我想做的一件事是监视config .ini文件。我是PowerShell的新手,无法完全使用它。

基本上,我希望脚本检查配置文件(ultravnc.ini)的内容,并查看该文件中的字符串是否为“ MSLogonRequired = 1”。如果没有,我想将日期附加到日志文件中。最终,我将为此做更多的工作,但这是我的基本需求。目前无法使用。

# Variables 
$outputFile = "vncMSLogonErrors.txt" 
$vncConfig = "C:\Program Files (x86)\uvnc bvba\UltraVNC\ultravnc.ini"
$checkString = "MSLogonRequired=1"


# Get VNC Config File, check for MS Logon setting, write date to file if missing
Get-Content $vncConfig
If (-not $checkString)
   {Add-Content $outputFile -Value $(Get-Date)}

2 个答案:

答案 0 :(得分:1)

# Variables 
$outputFile = "vncMSLogonErrors.txt" 
$vncConfig = "C:\Program Files (x86)\uvnc bvba\UltraVNC\ultravnc.ini"
$checkString = "MSLogonRequired=1"

if ((get-content $vncconfig) -notcontains $checkString)) { Add-Content $outputFile -Value $(Get-Date) }

答案 1 :(得分:1)

Shamus Berube's helpful answer从概念上讲很简单并且可以很好地工作,只要您可以假设:

  • 感兴趣的行正好是MSLogonRequired=1,空格没有变化。

  • 如果将INI文件细分为多个部分(例如[admin]),则键名MSLogonRequired在各部分中是唯一的,以防止误报。

因此,通常最好使用专用的INI文件解析命令;不幸的是:

使用PsIni模块的Get-IniContent函数:

注意:基于UltraVNC INI-file documentation,代码假定MSLogonRequired条目位于INI文件的[admin]部分中。

# Variables 
$outputFile = "vncMSLogonErrors.txt" 
$vncConfig = "C:\Program Files (x86)\uvnc bvba\UltraVNC\ultravnc.ini"

# Check the VNC Config File to see if the [admin] section's 'MSLogonRequired'
# entry, if present, has value '1'.
if ((Get-IniContent $vncConfig).admin.MSLogonRequired -ne '1') {
   Add-Content $outputFile -Value (Get-Date) 
}