Как удалить конкретный файл в powershell для текущего вошедшего в систему пользователя? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть 5 имен файлов, которые я хочу удалить с компьютера пользователя. Пути могут быть "current logged in username\desktop или downloads или documents папка.

Как мне добавить $env:UserName к коду, чтобы увидеть, существует ли файл, если так, то удалить? Я ценю любую помощь. спасибо

Пока у меня есть это, но оно не работает.

If (c:\users\$env:UserName\downloads\text.txt $strFileName){Remove-Item $strFileName}

Ответы [ 3 ]

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

Я не уверен, действительно ли вы имеете в виду c: \ username \ desktop, который будет $Env:USERNAME, или вы хотите удалить из профиля пользователя, который будет $env:USERPROFILE Удалите переменную $UserPath, как требуется ниже

$FiletoDelete = 'test.txt'
$UserPath = $env:USERNAME
$UserPath = $env:USERPROFILE
$PossibleFoldersPaths = @("Downloads","Documents","Desktop")


$PossibleFoldersPaths | ForEach {
    $DeletePath = Join-Path -Path (Join-Path -Path $UserPath -ChildPath $_) -ChildPath $FiletoDelete
    If (Test-Path -Path $DeletePath) {
        Try {
           Remove-Item -Path $DeletePath -ErrorAction Stop
        }
        Catch {
            $_
        }
    }
    Else {
        Write-Host "No file found at $DeletePath"
    }
}
0 голосов
/ 26 апреля 2019

Это на самом деле очень просто, используя Get-ChildItem и передавая его на Remove-Item.Вы можете использовать встроенную переменную $home, чтобы указать путь к профилю пользователя и указать, что вы хотите просмотреть все в папках рабочего стола, загрузок и документов.В прошлом вы использовали -Include для указания имен файлов, и все готово.

$arrFileNames = 'File1.txt','File2.log','File3.exe'
$arrPaths = "$home\Desktop\*","$home\downloads\*","$home\documents\*"
Get-ChildItem -Path $arrPaths -Include $arrFileNames | Remove-Item

Это позволит найти любые файлы в любом из этих мест и удалить их, если они существуют.

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

Вы можете проверить наличие файла / папки, используя Test-Path :

Test-Path -Path 'C:\Users\<UserName>\Desktop\text.txt'

Вы можете включить переменную окружения в путь:

Test-Path -Path "$env:USERPROFILE\Desktop\text.txt"

Альтернативным методом при использовании «специальных» папок является GetFolderpath метода .NET Environment class:

Test-Path -Path "$([Environment]::GetFolderPath('Desktop'))\Text.txt"

Проверьте здесь полный список папок, поддерживаемых этим методом: Environment.SpecialFolder Enum

Итак, для проверки и удаления файла (путь хранится в $strFileName), сделайте что-то вроде этого:

if(Test-Path -Path $strFileName) {
    Remove-Item -Path $strFileName
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...