【发布时间】:2023-02-23 03:20:21
【问题描述】:
大家好!
非常新手的脚本编写者在这里为公立学校 K-12 区寻找一些帮助。
示例代码:
#Clear Screen
cls
#Launch as Administrator
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = "& '" +$myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
# Search for all users of the Windows computer
$AllUsers = Get-ChildItem 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList' | ForEach-Object { $_.GetValue('ProfileImagePath') }
#For loop search of all computer users for specific application
foreach ($u in $Allusers) {
$u.Name
$app = (Get-AppxPackage -Name *12030rocksdanister.LivelyWallpaper* -AllUsers)
#If/Else statement to remove specific application or output not found message
if ($app) {
"Application Located!"
Get-AppxPackage -Name *12030rocksdanister.LivelyWallpaper* -User $u | Remove-AppxPackage
"Application Removed" }
else {
"Application Not Found." }
#Troubleshooting Pause
Read-Host - Prompt "Press any key to continue!"
}
我在公立学校系统工作,我们有学生从 Microsoft Store 下载未经授权的应用程序。我们已经通过仅转移到私人商店来解决这个问题。但是,我们需要删除一些学生安装的 AppxPackages。 (我们正在构建一个列表,我将把它放在一个数组中,以便稍后与上面的脚本一起使用。现在,我只是想在增加复杂性之前让脚本的基础工作。)
为此,我正在尝试编写一个 Powershell 脚本,该脚本将检查笔记本电脑上的用户,搜索该用户名的特定 AppxPackage,然后删除该特定包。
发生的事情是我正在搜索笔记本电脑上的用户,并且找到了 AppxPackage,但是,我认为我只是一次又一次地循环访问同一用户,而没有删除实际的包。
我在这里缺少什么:
- 查找一台机器的所有用户
- For 遍历每个用户寻找特定的 AppxPackage
- 如果找到 AppxPackage,删除 AppxPackage
- 否则转到下一个用户
- 当所有用户都删除了特定的 AppxPackage 时终止并关闭脚本。
提前感谢您的所有帮助和协助。我感谢你所有的眼睛和建议。祝你有美好的一天!
【问题讨论】:
-
Remove-AppxPackage也有一个-AllUsers开关。为什么不直接运行它呢? -
此外,在以管理员身份重新启动 PowerShell 后,您应该使用
exit而不是break来退出当前会话
标签: powershell appx