2017-12-27 390 views
0

我對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。

回答

0

「運行腳本被禁用......」幾乎可以肯定 - PowerShell執行策略設置爲「受限制」。請參閱Get-Help about_Execution_Policies

要啓用運行腳本,您需要以管理員身份運行PowerShell會話,並在該會話中執行一個執行策略,該策略將(a)爲您提供足夠的安全以滿足您的需求,並且(b)允許您執行你感覺舒適的腳本是安全的。見Get-Help Set-ExecutionPolicy