【发布时间】:2018-06-08 01:44:57
【问题描述】:
我正在尝试编写一个将 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。
【问题讨论】:
标签: powershell scripting