我已经写了一个shell脚本,将排除在Microsoft Defender防病毒扫描文件夹。我没有太多的经验与shell脚本,这是我想出:
Set-MpPreference -ExclusionPath D:\vpostest
echo "Exclusion Success"
Read-Host -Prompt "Press Enter to exit"
字符串
代码的第一行是我提到排除的地方,下面只是某种提示,通知用户排除成功(它仍然是一个正在进行的工作)。
当我运行脚本时,我收到一个错误:
Set-MpPreference : Operation failed with the following error: 0x%1!x!
At C:\Users\zainur.ariffin\Desktop\Powershell test\autoExclusion.ps1:1 char:1
+ Set-MpPreference -ExclusionPath D:\vpostest
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_MpPreference:root\Microsoft\...FT_MpPreference) [Set-MpPreference], CimException
+ FullyQualifiedErrorId : HRESULT 0xc0000142,Set-MpPreference
型
如果我没有弄错的话,我已经看到以下错误表明Microsoft Defender Antivirus未启用。我已经启用了此功能并重新启动了计算机,甚至使用“Get-MpComputerStatus”进行检查。然而,同样的错误不断出现。为什么会发生这种情况?
2条答案
按热度按时间h43kikqp1#
这是给所有和我有同样问题的人的
所以我发现脚本文件不能正常运行的原因是因为我没有以管理员的身份运行powershell。但是如何以管理员的身份运行shell脚本文件呢?
我尝试从脚本文件创建一个快捷方式,并尝试从属性中启用“以管理员身份运行”,但该选项是灰色的。这意味着我不能选择该选项,所以我必须找到另一种方法。
所以我得出一个结论,我需要创建一个脚本文件,将管理员权限授予我想要的脚本。这是因为它是不可能授予管理员权限的脚本本身内的脚本。以下是我用来授予管理员权限的命令:
字符串
该“
$scriptFile
“需要的脚本文件,你打算使用。我希望这是有用的人谁有同样的问题,我。hts6caw32#
You found the solution:
ConfigDefender
模块中的Set-MpPreference
**小程序必须 * 以提升 *(作为管理员)**运行,因为此模块中 * 修改 * 设置的所有小程序都必须运行。确保脚本运行时提升的方法:
*Ad hoc,假设脚本文件路径存储在
$scriptFile
中:字符串
-NoExit
在脚本退出后保持提升的会话打开,以便您可以检查其输出。-File
CLI参数更适合调用脚本文件,并且嵌入的双引号(``"..."
)可确保正确处理带有空格的路径。C:\Windows\System32
(如果您使用pwsh
,PowerShell(Core)CLI,则调用者的工作目录将被保留);如果这是一个问题,请修改脚本以更改位置,或者在调用脚本之前使用-Command
(-c
)CLI调用更改位置-请参阅this answer。***使用 self-elevation,即修改脚本,使其在需要时通过elevation重新调用自身,方法是在脚本的开头放置以下内容:
型
$PSCommandPath
包含运行脚本的完整路径。(Get-Process -Id $PID).Path
用于代替硬编码powershell
,以确保您使用的是用于启动脚本的相同PowerShell可执行文件;也就是说,如果您从 Windows PowerShell 启动,它将使用powershell.exe
,如果您从PowerShell (Core) 7+启动,它将使用pwsh.exe
。*交互创建快捷方式文件(
*.lnk
):*.ps1
文件不能从PowerShell外部直接执行,因此单独使用这样一个文件的路径作为快捷方式目标是行不通的:它将被视为一个要打开编辑的文档。Advanced...
(Advanced Properties
)子对话框中禁用Run as administrator
复选框的原因。Run as administrator
:型
WScript.Shell
COM object以 * 编程方式 * 创建快捷方式文件不幸地 * 不是 * 一个选项,因为它不公开属性以请求以管理员身份运行。