PowerShell через групповую политику - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть два отдельных файла PowerShell (.ps1), которые я хотел бы запускать один за другим, когда пользователь входит в систему на ПК.Это довольно простые задачи.Первый копирует ярлык из сетевого расположения во все папки пользователей 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 }

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Я решил это с помощью следующего файла pd1: Get-ChildItem \\File\Location | ForEach-Object { & $_.FullName }

0 голосов
/ 18 февраля 2019

Согласно комментариям, этот скрипт вы должны сохранить как .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
    }
}

Надеюсь, это поможет.

...