当我尝试创建这个.ps1文件:* * 查看完整的.ps1标记**
# Definieer het pad waar de bestanden worden gekopieerd
$sourcePath = "C:\Users\Mr.Fox\AppData\Local\Hogwarts Legacy\Saved"
# Definieer het pad waar de bestanden naartoe worden gekopieerd
$destinationPath = "D:\Games\Saved HL"
# Zoek naar de laatst gebruikte mapnummer
$latestFolder = Get-ChildItem $destinationPath | Where-Object { $_.PSIsContainer } | Sort-Object { [int]($_.Name -replace '^\D+') } -Descending | Select-Object -First 1
if ($latestFolder -eq $null) {
$folderNumber = 1
} else {
$folderNumber = [int]($latestFolder.Name -replace '^\D+') + 1
}
# Maak de nieuwe doelmap aan
$newFolderName = "Backup_$("{0:D2}" -f $folderNumber)"
$newFolderPath = Join-Path $destinationPath $newFolderName
if (-not (Test-Path $newFolderPath)) {
New-Item -ItemType Directory -Path $newFolderPath | Out-Null
}
# Voeg uitvoer toe aan het logbestand
$logFile = Join-Path $destinationPath "backuplog.txt"
$date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logEntry = "$date - Backup gemaakt naar map $newFolderPath"
Add-Content $logFile $logEntry
# Vraag de gebruiker om bevestiging voordat het script wordt uitgevoerd
$confirm = Read-Host "Weet je zeker dat je het script wilt uitvoeren? Typ 'ja' om door te gaan."
Write-Host "Bevestiging: $confirm"
if ($confirm -eq "ja") {
# Kopieer de bestanden van de bron naar de nieuwe doelmap
Copy-Item $sourcePath $newFolderPath -Recurse -Force
Write-Host "Het backupproces is voltooid en de uitvoer is toegevoegd aan het logbestand."
} else {
Write-Host "Script uitvoering geannuleerd."
}
# Zet de PowerShell uitvoeringsbeleid terug naar de oorspronkelijke instelling
if ((Get-ExecutionPolicy -Scope CurrentUser) -eq "RemoteSigned") {
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Restricted
}
Read-Host "Druk op een toets om door te gaan..."
然后我尝试单击"使用PowerShell运行",但它关闭了,Get-ExecutionPolicy -List
告诉我当前用户的策略是Restricted
,但当我尝试启用它时,它却返回到Restricted
,我不知道为什么。您能帮我解决这个问题吗?
PS C:\WINDOWS\system32> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Restricted
LocalMachine RemoteSigned
我试着在网上搜索解决方案,但没有得到很;我试过了:https://stackoverflow.com/a/27755459/19673867
还是同样的问题,我期待它能解决我的问题。
2023年2月27日8时24分:得到回复吗
我得到了这样的回应
PS C:\WINDOWS\system32〉设置执行策略不受限制
执行策略更改执行策略有助于保护您免受不信任的脚本的攻击。更改执行策略可能会使您面临https:/www.example.com上about_Execution_Policies帮助主题中描述的安全风险。是否要更改执行策略?[Y]是[A]全部是[N]否[L]全部否[S]挂起[?]帮助(默认为"N"):go.microsoft.com/fwlink/?LinkID=135170Windows PowerShell已成功更新你的执行策略,但该设置被在更具体的作用域中定义的策略覆盖。由于该覆盖,你的 shell 程序将保留其当前有效的执行策略"受限"。键入"Get-ExecutionPolicy-List"以查看你的执行策略设置。有关详细信息,请参阅"Get-Help Set-ExecutionPolicy"。行:1字符:1 y Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will retain its current effective execution policy of Restricted. Type "Get-ExecutionPolicy -List" to view your execution policy settings. For more information ple ase see "Get-Help Set-ExecutionPolicy". At line:1 char:1
- 设置执行策略不受限制
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
+ FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
PS C:\窗口\系统32〉
我在14:57查过了
在regedit标准中没有值,但"ExecutionPolicy"已设置为"不受限制",但我仍然无法运行脚本
2条答案
按热度按时间pftdvrlh1#
Restricted
,从而防止将来执行脚本:-ExecutionPolicy
参数(例如powershell.exe -ExecutionPolicy Bypass ...
),它相当于-Scope Process
-则根据定义,此类策略仅适用于 * 该进程 *,因此您不必担心恢复任何 * persistently * 定义的策略。Get-ExecutionPolicy -List
输出显示的内容,这会将您的用户帐户的有效执行策略更改为RemoteSigned
,这将允许执行脚本,但从Web下载的脚本除外:请继续阅读以获得解释和替代方案。
PowerShell的execution policies可以在 * 多个作用域 * 中定义,但在给定会话中只有 * 一个 * 作用域的策略是 * 有效的 * 策略。
Get-ExecutionPolicy
* 不带参数 * 列出了 * 有效 * 策略。Get-ExecutionPolicy -List
列出了为 * 所有 * 作用域定义的策略,按 * 优先级降序 * 排列:Undefined
以外的值的 * first * 作用域也是有效作用域。Restricted
(意味着 * 不允许 * 执行脚本)(在 * 桌面 * 版Windows中)和RemoteSigned
(在 * 服务器 * 版Windows中)。您的
Get-ExecutionPolicy -List
显示Restricted
在CurrentUser
作用域(特定于当前用户)中定义,RemoteSigned
在AllUsers
作用域中定义。因此,
Restricted
对您来说是"有效"的策略,可以防止脚本执行。根据您的需要,您有三个选项:
AllUsers
-scope策略RemoteSigned
适用(它允许执行源自本地文件系统或网络共享的脚本,但阻止通过Web浏览器、电子邮件客户端或Messenger应用程序下载的脚本):CurrentUser
策略,AllUsers
策略即可生效:RemoteSigned
):如果您还想更改
AllUsers
-scope策略,则需要从 * elevated * 会话(以管理员身份运行)执行此操作。li9yvcax2#
将LocalMachine作用域的执行策略设置为Unrestricted。此作用域比当前用户更重要。