我正在使用此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:Desktopfile_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation
(gc C:Desktopfile_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content C:Desktopfile_list_$(get-date -f yyyyMMdd).txt
而且效果很好。 现在的问题是,我被要求从计算机 A 启动此 .ps1 文件,以获取计算机 B 回收站中的文件(例如 \172.00.00.00(,进入 \172.00.00.00\文件夹并启动启动该 .ps1 文件的 cmd 文件。
我已经设置
(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.00CDesktopfile_list_$(get-date -f yyyyMMdd).txt -NoTypeInformation
(gc \172.00.00.00CDesktopfile_list_$(get-date -f yyyyMMdd).txt | select -Skip 1)| % {$_.Replace('"','')}| set-content \172.00.00.00CDesktopfile_list_$(get-date -f yyyyMMdd).txt
但是我如何告诉它检查计算机B的回收站?
谢谢!
将您的代码包装成一个简单的迷你函数,并在远程传递计算机名和系统凭据时调用它。如果您使用的是企业管理员,则无需传递信条,它将使用您的 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:pathusername-password-encrypted.txt
$username = 'domainusername'
$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。
希望对您有所帮助。