В вашем цикле Do-While вы берете значение поиска и устанавливаете его в пустую строку.$Search.value() = ""
.Если вы возьмете это и измените что-то вроде этого $search.Value() = $Search.value() -replace "^.*\\",''
, оно должно работать.Я использовал -replace с некоторым регулярным выражением, чтобы заменить все от обратной косой черты до начала строки.
Немного очистил ваш код, потому что, кажется, у вас были некоторые переменные с ошибками
$file = "C:\reports\report.xls"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Workbook = $Excel.workbooks.open($file)
$Worksheet = $Workbook.Worksheets.Item(1)
$SearchString = "*\"
$Range = $Worksheet.Range("A1").EntireColumn
$Search = $Range.find($SearchString)
if ($search -ne $null) {
$FirstAddress = $Search.Address
do {
$search.Value() = $Search.value() -Replace "^.*\\", ''
$search = $Range.FindNext($search)
} while ($search -ne $null -and $search.Address -ne $FirstAddress)
}