我来这里已经有一段时间了!我有一个脚本,用来检查是否安装了某个应用程序,如果它没有继续执行计划的任务来进行安装,我就陷入了一个困境。计划任务的原因是此软件供应商不支持第三方管理软件。这非常令人沮丧。
计划任务部分可以工作,但当我检查安装,然后传递脚本,如果它不是,我被卡住了。有没有人能帮我看一眼,让我知道我遗漏了什么?提前谢谢你。
$software = "Screen Capture Module - 15.2.8.747";
$installed32 = (Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -Like $software }).DisplayName -ne $null
$taskName = "ScreenCaptureInsScript"
$taskAction = New-ScheduledTaskAction -Execute 'C:\XXXXXX\Verint-SC\Install-script.bat'
$taskTrigger = New-ScheduledTaskTrigger -Once -At 7:00
$taskPrincipal = New-ScheduledTaskPrincipal -UserId "XXXXXXX\XXXXXXXX"
$taskSettings = New-ScheduledTaskSettingsSet `
-Compatibility Win8 `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-StartWhenAvailable
If ($installed32 -eq $null) {
# Register the scheduled task
Register-ScheduledTask `
-TaskName $taskName `
-Action $taskAction `
-Trigger $taskTrigger `
-Description "Verint Screen Capture Installation Script Task" `
-Settings $taskSettings `
-RunLevel Highest `
-Force
Set-ScheduledTask -TaskName 'ScreenCaptureInsScript' -User $taskPrincipal.UserID -Password 'xxXxxxXXXXx'
}发布于 2021-08-26 14:03:28
您使用-ne $null将$installed32设置为true/false值,但是您的if语句正在检查$installed32 -eq $null而不是true/false。这意味着您的if语句的计算结果始终为false,并且不会运行。例如:
# neither of the true/false bools evaluate to null
$null -eq $true
$false
$null -eq $false
$false相反,您可能只想测试true/false值:
if (-not $installed32) { Register-ScheduledTask... }以及一些清理工作:
$software32 = Get-ItemProperty 'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
# Check for incompatible software before creating task
if ($software32.DisplayName -NotContains 'Screen Capture Module - 15.2.8.747') {
Register-ScheduledTask ...
}https://stackoverflow.com/questions/68938693
复制相似问题