/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System;
using System.Management.Automation;
using System.Management.Automation.Internal;
namespace Microsoft.PowerShell.Commands
{
///
/// The implementation of the "set-alias" cmdlet
///
///
[Cmdlet(VerbsCommon.Set, "Alias", SupportsShouldProcess = true, HelpUri = "https://go.microsoft.com/fwlink/?LinkID=113390")]
[OutputType(typeof(AliasInfo))]
public class SetAliasCommand : WriteAliasCommandBase
{
#region Command code
///
/// The main processing loop of the command.
///
///
protected override void ProcessRecord()
{
// Create the alias info
AliasInfo aliasToSet =
new AliasInfo(
Name,
Value,
Context,
Option);
aliasToSet.Description = Description;
string action = AliasCommandStrings.SetAliasAction;
string target = StringUtil.Format(AliasCommandStrings.SetAliasTarget, Name, Value);
if (ShouldProcess(target, action))
{
// Set the alias in the specified scope or the
// current scope.
AliasInfo result = null;
try
{
if (String.IsNullOrEmpty(Scope))
{
result = SessionState.Internal.SetAliasItem(aliasToSet, Force, MyInvocation.CommandOrigin);
}
else
{
result = SessionState.Internal.SetAliasItemAtScope(aliasToSet, Scope, Force, MyInvocation.CommandOrigin);
}
}
catch (SessionStateException sessionStateException)
{
WriteError(
new ErrorRecord(
sessionStateException.ErrorRecord,
sessionStateException));
return;
}
// Write the alias to the pipeline if PassThru was specified
if (PassThru && result != null)
{
WriteObject(result);
}
}
} // ProcessRecord
#endregion Command code
} // class SetAliasCommand
}//Microsoft.PowerShell.Commands