none
список удачно скопированных файлов (Copy-Item) RRS feed

  • Вопрос

  • Добрый день. Есть задача удалять профили пользователей у которых нет учетной записи в AD, предварительно перемещать их во временной хранилище перед удалением, при этом логировать список перемещенных файлов. Как логировать файлы которые не удалось переместить я нашел, а вот удачное перемещение нет. Ниже привожу листинг скрипта:

    cls
    $OldUserProfile= "C:\OldUserProfile\"


    function FindOldUserProfile
    {
    $UserProfile= Get-WmiObject Win32_UserProfile 
        foreach ($a in $UserProfile)
            {
                $objSID = New-Object System.Security.Principal.SecurityIdentifier($a.SID) 
                $a.SID
                $error.Clear()
                $objUser = $objSID.Translate([System.Security.Principal.NTAccount])
                $a.LocalPath
                CopyOldUserProfile -CopyUserFolder $a.LocalPath
                if ($? -eq 0)
                    {
                        CopyOldUserProfile -CopyUserFolder $a.LocalPath 
                        Write-Host "Not found user: $a"
                        #$a | Remove-WmiObject                
                    } 
                $objUser.Value
        }
    }

    function CopyOldUserProfile
    {
        param ($CopyUserFolder)
        $LogCopyUserFolder = $OldUserProfile
        Copy-Item -Path $CopyUserFolder -Recurse -Destination $OldUserProfile -Force -ErrorAction SilentlyContinue -ErrorVariable BadCopy -OutVariable GodCopy
        $BadCopy= $BadCopy | foreach {$_.TargetObject}
        $BadCopy= $BadCopy | foreach {$_.fullname}
        $BadCopy

    }

    FindOldUserProfile

    26 августа 2013 г. 10:05

Ответы

  • function CopyOldUserProfile
    {
        param ($CopyUserFolder)
        $LogCopyUserFolder = $OldUserProfile
        Copy-Item -Path $CopyUserFolder -Recurse`
           -Destination $OldUserProfile -Force -ErrorAction SilentlyContinue` 
                -OutVariable GoodCopy -ErrorVariable BadCopy -PassThru | Out-Null
        
        $GoodCopy = $GoodCopy | Select -ExpandProperty FullName
        $BadCopy = $BadCopy | Foreach {$_.TargetObject} 
        New-Object PSObject -Property @{GoodCopy = $GoodCopy;BadCopy = $BadCopy}
    }



    26 августа 2013 г. 11:33
    Отвечающий