Перечисление файлов в корзину с другого компьютера - PullRequest
0 голосов
/ 15 октября 2019

Я использую этот код PowerShell для получения txt-файла со всеми файлами в Корзине с их исходным местоположением (получено из Список файлов в корзине ):

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()|select @{n="OriginalLocation";e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}},Name| export-csv -delimiter "\" -path C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation

(gc C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content C:\Desktop\file_list_$(get-date -f yyyyMMdd).txt

и это прекрасно работает. Теперь проблема в том, что меня попросили запустить этот файл .ps1 с компьютера A для получения файлов в корзину компьютера B (например, \ 172.00.00.00), перейти в папку \ 172.00.00.00 \ и запустить cmd. файл, который запускает этот файл .ps1.

Я установил

(New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()|select @{n="OriginalLocation";e={$_.ExtendedProperty("{9B174B33-40FF-11D2-A27E-00C04FC30871} 2")}},Name| export-csv -delimiter "\" -path \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation

(gc \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content \\172.00.00.00\C\Desktop\file_list_$(get-date -f yyyyMMdd).txt

, но как мне сказать ему проверить корзину компьютера B?

Спасибо!

1 Ответ

0 голосов
/ 15 октября 2019

Оберните ваш код в прямую мини-функцию и вызовите ее с удаленной передачей имени компьютера и учетных данных системы. Если вы используете администратора предприятия, вам не нужно передавать кредиты, и он будет использовать вашу аутентификацию Windows для подключения к удаленным системам.

$scriptblock = {
    function Get-RecycleBinItems 
    {
        (New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() |
            Select-Object Name, Size, Path
    }
    Get-RecycleBinItems
}

Invoke-Command -ComputerName $computer -ScriptBlock $scriptblock 

Для передачи учетных данных вы можете использовать:

Read-Host -assecurestring | convertfrom-securestring | out-file C:\path\username-password-encrypted.txt
$username = 'domain\username'
$password = 'password' | convertto-securestring
$creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password
Invoke-Command -ComputerName Hostname -ScriptBlock $ScriptBlock -Credential $creds

Примечание. Я ожидаю, что PSRemoting настроен. Если он не настроен, убедитесь, что вы сначала настроили PSRemoting.

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

...