forked from PowerShell/PowerShell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSetContentCommand.cs
More file actions
99 lines (90 loc) · 3.56 KB
/
Copy pathSetContentCommand.cs
File metadata and controls
99 lines (90 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System.Management.Automation;
using System.Management.Automation.Internal;
using Dbg = System.Management.Automation;
namespace Microsoft.PowerShell.Commands
{
/// <summary>
/// A command to set the content of an item at a specified path
/// </summary>
[Cmdlet(VerbsCommon.Set, "Content", DefaultParameterSetName = "Path", SupportsShouldProcess = true, SupportsTransactions = true,
HelpUri = "http://go.microsoft.com/fwlink/?LinkID=113392")]
public class SetContentCommand : WriteContentCommandBase
{
#region protected members
/// <summary>
/// Called by the base class before the streams are open for the path.
/// This override clears the content from the item.
/// </summary>
///
/// <param name="paths">
/// The path to the items that will be opened for writing content.
/// </param>
///
internal override void BeforeOpenStreams(string[] paths)
{
if (paths == null ||
(paths != null && paths.Length == 0))
{
throw PSTraceSource.NewArgumentNullException("paths");
}
CmdletProviderContext context = new CmdletProviderContext(GetCurrentContext());
foreach (string path in paths)
{
try
{
InvokeProvider.Content.Clear(path, context);
context.ThrowFirstErrorOrDoNothing(true);
}
catch (PSNotSupportedException)
{
// If the provider doesn't support clear, that is fine. Continue
// on with the setting of the content.
continue;
}
catch (DriveNotFoundException driveNotFound)
{
WriteError(
new ErrorRecord(
driveNotFound.ErrorRecord,
driveNotFound));
continue;
}
catch (ProviderNotFoundException providerNotFound)
{
WriteError(
new ErrorRecord(
providerNotFound.ErrorRecord,
providerNotFound));
continue;
}
catch (ItemNotFoundException)
{
//If the item is not found then there is nothing to clear so ignore this exception.
continue;
}
}
} // BeforeOpenStreams
/// <summary>
/// Makes the call to ShouldProcess with appropriate action and target strings.
/// </summary>
///
/// <param name="path">
/// The path to the item on which the content will be set.
/// </param>
///
/// <returns>
/// True if the action should continue or false otherwise.
/// </returns>
///
internal override bool CallShouldProcess(string path)
{
string action = NavigationResources.SetContentAction;
string target = StringUtil.Format(NavigationResources.SetContentTarget, path);
return ShouldProcess(target, action);
}
#endregion protected members
} // SetContentCommand
} // namespace Microsoft.PowerShell.Commands