我有两个单独的PowerShell(.ps1)文件,当用户登录PC时,它们一个接一个地运行。它们是非常简单的任务。第一个将快捷方式从网络位置复制到所有用户的AppData文件夹。
Copy-Item -Path "\\Server\Share\*.lnk" -Destination "$env:APPDATA\Microsoft\Windows\Start Menu\Programs"
第二个.ps1文件从Windows 10中删除了一些过时的软件,我不会将所有代码都放在这里,因为它具有很强的重复性,但它基本上列出了一些应用程序并最终将其删除。
$AppList = @(
"*Microsoft.3dbuilder*"
"*AdobeSystemsIncorporated.AdobePhotoshopExpress*"
"*Microsoft.WindowsAlarms*"
"*Microsoft.Asphalt8Airborne*"
)
foreach ($App in $AppList) {
Get-AppxPackage -Name $App | Remove-AppxPackage -ErrorAction SilentlyContinue
}
如果我将两个文件放入相同的登录策略中,则第一个脚本将运行,但是第二个脚本要等到用户注销并重新启动后才能运行(我希望它们都同时运行)
我尝试将它们都放在同一个文件中,然后用;
分开,但这没有用,所以尝试了and
,同样没有乐趣。我还尝试过创建一个主文件(两个.ps1文件位于同一位置),然后运行以下文件,同样如此,这是行不通的。
&"$PSScriptroot\Copy Devices and Printers Shortcut.ps1" &"$PSScriptroot\BloatwareRemoval.ps1"
我也尝试过用;
和and
分开上面的内容。
编辑我已经使用以下pd1文件解决了此问题:
Get-ChildItem \\File\Location | ForEach-Object {
& $_.FullName
}
答案 0 :(得分:0)
根据评论,您应该将此脚本另存为.ps1
文件,并根据需要进行调用。它将一起执行这两个操作。我添加了错误处理,但是理想情况下,您应该将它们解析为文件,以便在发生任何故障时可以进行引用。
If( (Test-Path -Path "\\Server\Share\*.lnk") -and (Test-Path -Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs"))
{
Copy-Item -Path "\\Server\Share\*.lnk" -Destination "$env:APPDATA\Microsoft\Windows\Start Menu\Programs"
}
else
{
"Invalid path. Kindly validate. "
}
@("*Microsoft.3dbuilder*","*AdobeSystemsIncorporated.AdobePhotoshopExpress*","*Microsoft.WindowsAlarms*","*Microsoft.Asphalt8Airborne*")|% {
try{
Get-AppxPackage -Name $_ | Remove-AppxPackage -ErrorAction stop
}
catch
{
$_.Exception.Message
}
}
希望有帮助。
答案 1 :(得分:0)
我已使用以下pd1文件解决了此问题:
Get-ChildItem \\File\Location | ForEach-Object {
& $_.FullName
}