Powershell脚本无法调用它自己,因为“在此系统上禁用运行脚本”

我对powershell脚本编程(以及编程/一般脚本编程)非常陌生,这是我的第一个powershell脚本。我正在尝试编写一个将Linux子系统安装到PC上的脚本。下面是代码Powershell脚本无法调用它自己,因为“在此系统上禁用运行脚本”

function Get-ScriptDirectory { #Gets scripts full path 

Split-Path -parent $PSCommandPath

}

If (-NOT ([Security.Principal.WindowsPrincipal]

[Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`

[Security.Principal.WindowsBuiltInRole] "Administrator")) #checks if script is being run as admin

{

Set-Location -Path $PSScriptRoot

PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "&

{Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy

Unrestricted -File ""Get-ScriptDirectory""' -Verb RunAs}"; #starts

#Powershell with admin permissions and executes this script

Break

}

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux #Installs WSL

我不得不采取if语句如果脚本正在与管理员privliges(似乎无法再找到它)运行的检查。我也在Fedora主机上的一个虚拟机内运行它。我认为它不能称之为自己的事实,因为“在这个系统上禁用运行脚本”非常奇怪。我拿出了if语句,一切运行良好,并安装WSL。

回答:

“运行脚本被禁用......”几乎可以肯定 - PowerShell执行策略设置为“受限制”。请参阅Get-Help about_Execution_Policies

要启用运行脚本,您需要以管理员身份运行PowerShell会话,并在该会话中执行一个执行策略,该策略将(a)为您提供足够的安全以满足您的需求,并且(b)允许您执行你感觉舒适的脚本是安全的。见Get-Help Set-ExecutionPolicy

以上是 Powershell脚本无法调用它自己,因为“在此系统上禁用运行脚本” 的全部内容, 来源链接: utcz.com/qa/264861.html

回到顶部