Ah okay, I think I might know what is needed to be done with that information...
I did add a check for the variables if they're null or not:
Get-TagAssignment -entity $srvr |
ForEach-Object -Process {
New-Variable -Name "$($_.Tag.Category.Name)tag" -Value $_.Tag.Name
}
$DRtag -eq $null
$Backuptag -eq $null
$OStag -eq $null
$Ownertag -eq $null
$Carbonitetag -eq $null
$Applicationtag -eq $null
Write-Host -ForegroundColor Yellow "Production server, $srvr, is in folder $($vmfldr.Folder) and on datastore $($vmds.Name) and on VLAN $($vmnn.NetworkName) with tags: $($vmtags)"
When the script was run, output was:
True
True
True
False
True
True
Production server, HELPER, is in folder ABC and on datastore CLONES and on VLAN 733-ABC with tags: Owner/ABC
Which is true because since I'm testing this, I only put 1 tag (the Owner tag) on the HELPER server.
The Owner tag did get applied to the restored server, but then I received the following errors (code will be below the errors):
Adding all appropriate tags on HELPER...
Get-Tag : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\Todd\powercli_scripts\1restore-swap.ps1:176 char:51
+ ... Tag = Get-Tag -Category "Application" -Name "$Applicationtag" -ErrorA ...
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Tag], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.GetTag
Get-Tag : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\Todd\powercli_scripts\1restore-swap.ps1:177 char:49
+ ... ycarTag = Get-Tag -Category "Carbonite" -Name "$Carbonitetag" -ErrorA ...
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Tag], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.GetTag
Get-Tag : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\Todd\powercli_scripts\1restore-swap.ps1:179 char:41
+ $myosTag = Get-Tag -Category "OS" -Name "$OStag" -ErrorAction Silentl ...
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Tag], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.GetTag
Get-Tag : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\Todd\powercli_scripts\1restore-swap.ps1:180 char:49
+ $mybackupTag = Get-Tag -Category "Backup" -Name "$Backuptag" -ErrorAc ...
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Tag], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.GetTag
Get-Tag : Cannot validate argument on parameter 'Name'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At D:\Todd\powercli_scripts\1restore-swap.ps1:181 char:41
+ $mydrTag = Get-Tag -Category "DR" -Name "$DRtag" -ErrorAction Silentl ...
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Tag], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.GetTag
New-TagAssignment : Cannot bind argument to parameter 'Tag' because it is null.
At D:\Todd\powercli_scripts\1restore-swap.ps1:183 char:47
+ Get-VM -Name "$srvr" | New-TagAssignment -Tag $myappTag -ErrorAction ...
+ ~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-TagAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.NewTagAssignment
New-TagAssignment : Cannot bind argument to parameter 'Tag' because it is null.
At D:\Todd\powercli_scripts\1restore-swap.ps1:184 char:47
+ Get-VM -Name "$srvr" | New-TagAssignment -Tag $mycarTag -ErrorAction ...
+ ~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-TagAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.NewTagAssignment
New-TagAssignment : Cannot bind argument to parameter 'Tag' because it is null.
At D:\Todd\powercli_scripts\1restore-swap.ps1:186 char:47
+ Get-VM -Name "$srvr" | New-TagAssignment -Tag $myosTag -ErrorAction S ...
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-TagAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.NewTagAssignment
New-TagAssignment : Cannot bind argument to parameter 'Tag' because it is null.
At D:\Todd\powercli_scripts\1restore-swap.ps1:187 char:47
+ Get-VM -Name "$srvr" | New-TagAssignment -Tag $mybackupTag -ErrorActi ...
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-TagAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.NewTagAssignment
New-TagAssignment : Cannot bind argument to parameter 'Tag' because it is null.
At D:\Todd\powercli_scripts\1restore-swap.ps1:188 char:47
+ Get-VM -Name "$srvr" | New-TagAssignment -Tag $mydrTag -ErrorAction S ...
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-TagAssignment], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,VMware.VimAutomation.ViCore.Cmdlets.Commands.Tagging.NewTagAssignment
Code:
$myappTag = Get-Tag -Category "Application" -Name "$Applicationtag" -ErrorAction SilentlyContinue
$mycarTag = Get-Tag -Category "Carbonite" -Name "$Carbonitetag" -ErrorAction SilentlyContinue
$myownerTag = Get-Tag -Category "Owner" -Name "$Ownertag" -ErrorAction SilentlyContinue
$myosTag = Get-Tag -Category "OS" -Name "$OStag" -ErrorAction SilentlyContinue
$mybackupTag = Get-Tag -Category "Backup" -Name "$Backuptag" -ErrorAction SilentlyContinue
$mydrTag = Get-Tag -Category "DR" -Name "$DRtag" -ErrorAction SilentlyContinue
Get-VM -Name "$srvr" | New-TagAssignment -Tag $myappTag -ErrorAction SilentlyContinue | Out-Null
Get-VM -Name "$srvr" | New-TagAssignment -Tag $mycarTag -ErrorAction SilentlyContinue | Out-Null
Get-VM -Name "$srvr" | New-TagAssignment -Tag $myownerTag -ErrorAction SilentlyContinue | Out-Null
Get-VM -Name "$srvr" | New-TagAssignment -Tag $myosTag -ErrorAction SilentlyContinue | Out-Null
Get-VM -Name "$srvr" | New-TagAssignment -Tag $mybackupTag -ErrorAction SilentlyContinue | Out-Null
Get-VM -Name "$srvr" | New-TagAssignment -Tag $mydrTag -ErrorAction SilentlyContinue | Out-Null
I'm guessing I could do some if statements saying, "if $Ownertag -eq $null, skip it, else tag the restored server with $Ownertag" ?