我正在尝试编写一个将Linux子系统安装到PC上的脚本。这是代码:
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
语句检查脚本是否以系统管理员权限运行(似乎无法再找到它)。我也是在Fedora主机上的VM中运行它。我认为它不能自称因为“在这个系统上禁用运行脚本”这一事实非常奇怪。我拿出了if
语句,一切运行正常,它安装了WSL。
答案 0 :(得分:0)
“正在运行脚本...”表示 - 几乎可以肯定 - PowerShell执行策略设置为“受限制”。请参阅Get-Help about_Execution_Policies
。
要启用运行脚本,您需要以管理员身份运行PowerShell会话,并在该会话中Set-ExecutionPolicy
执行一项执行策略,该策略将(a)为您提供足够的安全性以满足您的需求,以及(b)允许您执行您认为安全的脚本。请参阅Get-Help Set-ExecutionPolicy
。