'Adding a success or fail message to a script

I have the below very simple script that changes hostname and workgroup to multiple pcs. I want to add to that script a success or fail message but I can't find a way to do that. Can someone help?

$cred = Get-Credential domain\user
$computers = Import-Csv "C:\12.txt" -Header Oldname,Newname
foreach ($name in $computers) {
Add-computer -computername $name.Oldname -workgroupname workgroup -newname $name.Newname -credential $cred -restart -force
}


Solution 1:[1]

Append switch -PassThru to the Add-Computer cmdlet.
Normally, this cmdlet does not output anything, but with the PassThru switch, it will return a ComputerChangeInfo object from which you can check the .HasSucceeded property.

$cred      = Get-Credential domain\user
$computers = Import-Csv -Path  "C:\12.txt" -Header Oldname,Newname
foreach ($name in $computers) {
    # use splatting on cmdlets that take a lot of parameters
    $params = @{
        Computername  = $name.Oldname
        WorkgroupName = $workgroup
        NewName       = $name.Newname
        Credential    = $cred
        Restart       = $true
        Force         = $true
        PassThru      = $true
    }

    try {
        $machine = Add-Computer @params -ErrorAction Stop
        if ($machine.HasSucceeded) { 
            Write-Host "Successfully added computer '$($machine.ComputerName)'" -ForegroundColor Green
        }
        else {
            Write-Host "Adding computer '$($machine.ComputerName)' failed!" -ForegroundColor red
        }
    }
    catch {
        Write-Warning "Error adding computer $($name.Oldname):`r`n$($_.Exception.Message)"
    }
}

You can also experiment with adding switch -Verbose to get more detailed information returned from Add-Computer

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Theo