I had write down the script to get the checkout file by user name here is the script :
function Get-CheckedOutFiles() {
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Sharepoint")
$webapp = [Microsoft.SharePoint.Administration.SPWebApplication]::Lookup("http://moss")
foreach ($site in $webapp.Sites) {
Write-Host "Processing Site: $($site.Url).."
$userlogin = "domain\username"
foreach ($web in $site.AllWebs)
{
Write-Host -foregroundcolor red "Processing Web: $($web.Url)..."
foreach ($list in ( $web.Lists | ? {$_ -is [Microsoft.SharePoint.SPDocumentLibrary]}) ) {
# Write-Host -foregroundcolor green "Processing List: $($list.RootFolder.ServerRelativeUrl)..."
foreach ($item in $list.CheckedOutFiles) {
if ($item.CheckedOutBy.LoginName -eq $userLogin) {
$hash = @{
“URL”=$web.Site.MakeFullUrl(“$($web.ServerRelativeUrl.TrimEnd(‘/’))/$($item.Url)”);
“CheckedOutBy”=$item.CheckedOutBy;
“CheckedOutByEmail”=$item.CheckedOutByEmail
}
New-Object PSObject -Property $hash
}
}
foreach ($item in $list.Items) {
if ($item.File.CheckOutStatus -ne "None" -and $item.File.CheckedOutBy.LoginName -eq $userLogin){
$hash = @{
“URL”=$web.Site.MakeFullUrl(“$($web.ServerRelativeUrl.TrimEnd(‘/’))/$($item.Url)”);
“CheckedOutBy”=$item.CheckedOutBy;
“CheckedOutByEmail”=$item.CheckedOutByEmail
}
New-Object PSObject -Property $hash
}
}
}
$web.Dispose()
}
}
}
Get-CheckedOutFiles |select URL, CheckedOutBy ,CheckedOutByEmail
Change url http://moss to your web apps and
$userlogin = username to find the file checkedout to that user.
This works on web app level.
This script give the checkout file by user when it was first upload and checked out to user which is seen only through Manage Checkout Files option under Document library settings.Such files don't show username when it pops up in power shell results.
It shows also the check out file by user during editing process.
I am not sure how much it will effect the performance as i had just run it on dev but it works well for my scenario.
Thanks