使用Powershell通过管理员帐户删除文件

时间:2019-02-26 01:19:31

标签: powershell admin administrator start-process

我正在尝试做的简短摘要。 我在Powershell中有一个脚本,该脚本需要2个文件,并读取嵌入式凭据,并将它们存储在变量中,然后可以从中运行管理命令。

这很好用,但是,在读取文件并存储密钥之后,我试图删除2个文件,并且不断出现以下错误:

  

启动过程:无法使用指定的参数来解析参数集   命名参数。位于\ mars \ Client-Installs \ NetSmart   Test3 \ Setup.ps1:137字符:15   +开始进程<<<< -FilePath“ powershell.exe”-凭据$ adminCreds -WindowStyle隐藏-ArgumentList“删除项-Path   $ file1 -Force“ -WorkingDirectory $ path -NoNewWindow -PassThru       + CategoryInfo:InvalidArgument :( :) [开始过程],ParameterBindingException       + FullyQualifiedErrorId:AmbiguousParameterSet,Microsoft.PowerShell.Commands.StartProcessCommand

     

启动过程:无法使用指定的参数来解析参数集   命名参数。位于\ mars \ Client-Installs \ NetSmart   Test3 \ Setup.ps1:138字符:15   +开始进程<<<< -FilePath“ powershell.exe”-凭据$ adminCreds -WindowStyle隐藏-ArgumentList“删除项-Path   $ file2 -Force“ -WorkingDirectory $ path -NoNewWindow -PassThru       + CategoryInfo:InvalidArgument :( :) [开始过程],ParameterBindingException       + FullyQualifiedErrorId:AmbiguousParameterSet,Microsoft.PowerShell.Commands.StartProcessCommand

我使用的帐户是域管理员的一部分,当我在任务管理器中查看时,可以看到它在管理模式下运行。

我还知道文件所在的文件夹路径也具有完全共享和安全访问权限。

这是我的代码的摘要(最下面的两行似乎无效)

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 :(得分:0)

您不能同时指定-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