1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| $log_dir = $env:USERPROFILE + '\Desktop\'
$log_name = 'Remote-idm_log.csv'
$log_FullName = $log_dir + $log_name
Function Write-Log
{
Param
(
[Parameter(Mandatory=$False)][ValidateSet("INFO","WARN","ERROR","FATAL","DEBUG","JOB")][String]$level = "INFO",
[Parameter(Mandatory=$True)][string]$data,
[Parameter(Mandatory=$True)][string]$logfile
)
$stamp = (Get-Date).toString("dd/MM/yyyy;HH:mm:ss")
$data = "$stamp;$Level;$data"
if ( $data ) { Write-Host $data }
If ( !( Test-Path $log ) )
{
New-Item -Path $log_dir -Name $log_name -ItemType "file" | Out-Null
}
else
{
if ( $data ) { Add-Content $logfile -Value $data }
else { Add-Content $logfile -Value "$stamp;$Level;NODATA" }
}
}
$WriteLog_Remote = Get-Item 'Function:\Write-Log'
$url_file = $env:TMP + '\url.txt'
Start-Process notepad.exe -ArgumentList $url_file -Wait
$link_list = Get-Content $url_file
foreach ( $link in $link_list )
{
if ( $link )
{
$PSSession_id = New-PSSession -ComputerName 'NAS'
Invoke-Command -Session $PSSession_id -ScriptBlock {
param( $link, $WriteLog_Remote, $logFile )
[ScriptBlock]::Create($using:WriteLog_remote)
$arguments = '/s' + ' /d ' + $using:link + ' /p E:\DOWNLOAD\ /n /q'
Write-Host Downloading $using:link -ForegroundColor Green
&$using:WriteLog_Remote -level 'INFO' -data $using:link -logfile $using:logFile
$process = Start-Process IDMan.exe -ArgumentList $arguments -NoNewWindow -PassThru
$process.WaitForExit()
} -ArgumentList $link, $WriteLog_Remote, $log_FullName
Remove-PSSession $PSSession_id
}
} |
Partager