如何使用 PowerShell 通过 Start-Job 运行 Symantec Endpoint Protection 扫描?
How do I run a Symantec Endpoint Protection scan via Start-Job with PowerShell?
我正在尝试 运行 通过 PowerShell 作为后台进程进行防病毒扫描。
我的代码:
$arg1 = "/c"
$arg2 = "/ScanAllDrives"
$logFile = "/LOGFILE='C:\Users\user\AppData\Local\Symantec\Symantec Endpoint Protection\Logs\test.log'"
Start-Job -ScriptBlock {"C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe"} -ArgumentList "$arg1 $arg2 $logFile
作业 运行 秒然后停止。 Get-Job
显示它已完成,但它没有给出 运行时间和缺少日志文件。
当我从 PowerShell 控制台 运行 它工作正常,如下所示:
& "C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe" /c /ScanAllDrives
知道为什么这不会 运行 在后台吗?我试过将 args 直接添加到脚本块中,但它似乎根本不喜欢那样。由于后台作业不产生任何输出,所以我很难理解为什么它会完成。
根据您的评论,在调查 PowerShell 作业的结果时,使用带有作业 ID 的 Receive-Job
cmdlet 来查看结果输出。这可能会帮助您进一步排除故障。
我认为以下修改后的代码可以工作,但我没有在本地安装 SEP,因此无法执行完整的测试(但它确实可以使用替代 .exe):
$arg1 = '/c'
$arg2 = '/ScanAllDrives'
$logFile = '/LOGFILE="C:\Users\user\AppData\Local\Symantec\Symantec Endpoint Protection\Logs\test.log"'
Start-Job -ScriptBlock {& "C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe" $Args[0] $Args[1] $Args[2]} -ArgumentList $arg1, $arg2, $logFile
解释:
- 可执行文件的路径需要用引号引起来,因为它包含空格。
- 传递给
-ArgumentList
的变量需要通过名为 $Args
. 的自动数组变量在脚本块中引用
- 你传递给
-ArgumentList
的变量需要用逗号分隔。
我正在尝试 运行 通过 PowerShell 作为后台进程进行防病毒扫描。
我的代码:
$arg1 = "/c"
$arg2 = "/ScanAllDrives"
$logFile = "/LOGFILE='C:\Users\user\AppData\Local\Symantec\Symantec Endpoint Protection\Logs\test.log'"
Start-Job -ScriptBlock {"C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe"} -ArgumentList "$arg1 $arg2 $logFile
作业 运行 秒然后停止。 Get-Job
显示它已完成,但它没有给出 运行时间和缺少日志文件。
当我从 PowerShell 控制台 运行 它工作正常,如下所示:
& "C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe" /c /ScanAllDrives
知道为什么这不会 运行 在后台吗?我试过将 args 直接添加到脚本块中,但它似乎根本不喜欢那样。由于后台作业不产生任何输出,所以我很难理解为什么它会完成。
根据您的评论,在调查 PowerShell 作业的结果时,使用带有作业 ID 的 Receive-Job
cmdlet 来查看结果输出。这可能会帮助您进一步排除故障。
我认为以下修改后的代码可以工作,但我没有在本地安装 SEP,因此无法执行完整的测试(但它确实可以使用替代 .exe):
$arg1 = '/c'
$arg2 = '/ScanAllDrives'
$logFile = '/LOGFILE="C:\Users\user\AppData\Local\Symantec\Symantec Endpoint Protection\Logs\test.log"'
Start-Job -ScriptBlock {& "C:\Program Files (x86)\Symantec\Symantec Endpoint Protection.1.7004.6500.105\Bin\DoScan.exe" $Args[0] $Args[1] $Args[2]} -ArgumentList $arg1, $arg2, $logFile
解释:
- 可执行文件的路径需要用引号引起来,因为它包含空格。
- 传递给
-ArgumentList
的变量需要通过名为$Args
. 的自动数组变量在脚本块中引用
- 你传递给
-ArgumentList
的变量需要用逗号分隔。