Удалить файл с помощью powershell через учетную запись администратора - PullRequest
0 голосов
/ 26 февраля 2019

Краткое описание того, что я пытаюсь сделать.У меня есть скрипт в powershell, который принимает 2 файла и считывает их во встроенные учетные данные и сохраняет их в переменной, к которой затем можно запускать административные команды.

Однако это прекрасно работает после того, как файлы прочитаны иключ сохранен, я пытаюсь удалить 2 файла и получаю следующую ошибку:

Start-Process: набор параметров не может быть разрешен с использованием указанных именованных параметров.В \ mars \ Client-Installs \ NetSmart Test3 \ Setup.ps1: 137 char: 15 + Start-Process <<<< -FilePath "powershell.exe" -Credential $ adminCreds -WindowStyle Hidden -ArgumentList "Remove-Item -Path $file1 -Force "-WorkingDirectory $ path -NoNewWindow -PassThru + CategoryInfo: InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId: AmbiguousParameterSet, Microsoft.PowerShell.Commands.StartProcessCommand Параметр * 100 * * Параметр запусканабор не может быть разрешен с использованием указанных именованных параметров.В \ mars \ Client-Installs \ NetSmart Test3 \ Setup.ps1: 138 char: 15 + Start-Process <<<< -FilePath "powershell.exe" -Credential $ adminCreds -WindowStyle Hidden -ArgumentList "Remove-Item -Path $file2 -Force "-WorkingDirectory $ path -NoNewWindow -PassThru + CategoryInfo: InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId: AmbiguousParameterSet, Microsoft.PowerShell.Commands.StartProcessCommand * 100 * * 100 * 100 * * 100 *Я работаю с частью администратора домена, и когда я смотрю в диспетчере задач, я вижу, что он работает в режиме администрирования. </p>

Я также знаю, что путь к папке, в которой находятся файлы, также имеет полный доступ к общим ресурсам и безопасностьк.

Вот фрагмент моего кода (нижние 2 строки - те, которые не работают)

function Authentication
{
    #---------------------------------------------------
    #Authenticate Admin Account using encrypted password
    #---------------------------------------------------
    $TempFolder = $env:temp

    #The 2 lines underneath is if you are running the auth files from the same directory
    #$global:AESKeyFilePath = $path + "\aeskey.txt"
    #$global:SecurePwdFilePath =  $path + "\credpassword.txt"

    #Move the files to the temp folder
    $global:file1 = $path + "\aeskey.txt"
    $global:file2 =  $path + "\credpassword.txt"

    Copy-Item -Path $file1 -Destination $TempFolder -force
    Copy-Item -Path $file2 -Destination $TempFolder -force

    #If you choose to run it from the temp directory comment the lines above and uncomment the 2 below.
    $global:AESKeyFilePath = $TempFolder + "\aeskey.txt"
    $global:SecurePwdFilePath =  $TempFolder + "\credpassword.txt"
    $global:userUPN = "domain\user"

    #use key and password to create local secure passwordtemp
    $global:AESKey = Get-Content -Path $AESKeyFilePath 
    $global:pwdTxt = Get-Content -Path $SecurePwdFilePath
    $global:securePass = $pwdTxt | ConvertTo-SecureString -Key $AESKey

    #create a new psCredential object with required username and password
    $global:adminCreds = New-Object System.Management.Automation.PSCredential($userUPN, $securePass)

    #Remove the files below
    Start-Process -FilePath "powershell.exe" -Credential $adminCreds -WindowStyle Hidden -ArgumentList "Remove-Item -Path $file1 -Force" -WorkingDirectory $path -NoNewWindow -PassThru
    Start-Process -FilePath "powershell.exe" -Credential $adminCreds -WindowStyle Hidden -ArgumentList "Remove-Item -Path $file2 -Force" -WorkingDirectory $path -NoNewWindow -PassThru
}

1 Ответ

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

Нельзя указывать -NoNewWindow и -WindowStyle вместе, это противоречит.

См. Get-Command Start-Process -Syntax для наборов параметров.

Надеюсь, вам нужен следующий способ.Просто используйте -WindowStyle Hidden.

 Start-Process -FilePath "powershell.exe" -Credential $adminCreds -WindowStyle Hidden -ArgumentList "Remove-Item -Path $file2 -Force" -WorkingDirectory $path -PassThru
...