diff --git a/src/ResourceManager/ApiManagement/Commands.ApiManagement/Commands.ApiManagement.Netcore.csproj b/src/ResourceManager/ApiManagement/Commands.ApiManagement/Commands.ApiManagement.Netcore.csproj
index 51f908ed0130..860942a80da6 100644
--- a/src/ResourceManager/ApiManagement/Commands.ApiManagement/Commands.ApiManagement.Netcore.csproj
+++ b/src/ResourceManager/ApiManagement/Commands.ApiManagement/Commands.ApiManagement.Netcore.csproj
@@ -30,7 +30,7 @@
-
+
diff --git a/src/ResourceManager/AzureBatch/Commands.Batch.Test/Commands.Batch.Test.Netcore.csproj b/src/ResourceManager/AzureBatch/Commands.Batch.Test/Commands.Batch.Test.Netcore.csproj
index e89f6efdf80a..5688f3c1735d 100644
--- a/src/ResourceManager/AzureBatch/Commands.Batch.Test/Commands.Batch.Test.Netcore.csproj
+++ b/src/ResourceManager/AzureBatch/Commands.Batch.Test/Commands.Batch.Test.Netcore.csproj
@@ -27,7 +27,7 @@
-
+
diff --git a/src/ResourceManager/AzureBatch/Commands.Batch/Commands.Batch.Netcore.csproj b/src/ResourceManager/AzureBatch/Commands.Batch/Commands.Batch.Netcore.csproj
index fc600570e9f1..30137964b870 100644
--- a/src/ResourceManager/AzureBatch/Commands.Batch/Commands.Batch.Netcore.csproj
+++ b/src/ResourceManager/AzureBatch/Commands.Batch/Commands.Batch.Netcore.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/src/ResourceManager/Compute/Commands.Compute/Commands.Compute.Netcore.csproj b/src/ResourceManager/Compute/Commands.Compute/Commands.Compute.Netcore.csproj
index 7f8fe34ce240..2241ba763fd2 100644
--- a/src/ResourceManager/Compute/Commands.Compute/Commands.Compute.Netcore.csproj
+++ b/src/ResourceManager/Compute/Commands.Compute/Commands.Compute.Netcore.csproj
@@ -32,7 +32,7 @@
-
+
diff --git a/src/ResourceManager/Profile/Commands.Profile/packages.config b/src/ResourceManager/Profile/Commands.Profile/packages.config
index 8f2f808bef0a..3f5f87c044eb 100644
--- a/src/ResourceManager/Profile/Commands.Profile/packages.config
+++ b/src/ResourceManager/Profile/Commands.Profile/packages.config
@@ -10,23 +10,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config b/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config
index a48f1b72904b..0cbdd68652d4 100644
--- a/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config
+++ b/src/ResourceManager/Storage/Commands.Management.Storage.Test/packages.config
@@ -21,7 +21,7 @@
-
+
diff --git a/src/ResourceManager/Storage/Commands.Management.Storage/ChangeLog.md b/src/ResourceManager/Storage/Commands.Management.Storage/ChangeLog.md
index 5c1115eafeac..533d2e2c13de 100644
--- a/src/ResourceManager/Storage/Commands.Management.Storage/ChangeLog.md
+++ b/src/ResourceManager/Storage/Commands.Management.Storage/ChangeLog.md
@@ -18,6 +18,7 @@
- Additional information about change #1
-->
## Current Release
+* Upgrade to Azure Storage Client Library 9.3.0
## Version 5.0.4
* Fixed issue with default resource groups not being set.
diff --git a/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.Netcore.csproj b/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.Netcore.csproj
index 075b46f60ef5..2ed918cd7995 100644
--- a/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.Netcore.csproj
+++ b/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.Netcore.csproj
@@ -34,7 +34,7 @@
-
+
diff --git a/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.csproj b/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.csproj
index c4595eeecae7..b1d1815b5a67 100644
--- a/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.csproj
+++ b/src/ResourceManager/Storage/Commands.Management.Storage/Commands.Management.Storage.csproj
@@ -64,9 +64,8 @@
..\..\..\packages\Microsoft.Data.Services.Client.5.8.2\lib\net40\Microsoft.Data.Services.Client.dll
-
- ..\..\..\packages\WindowsAzure.Storage.9.0.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
- True
+
+ ..\..\..\packages\WindowsAzure.Storage.9.3.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
..\..\..\packages\System.Spatial.5.8.2\lib\net40\System.Spatial.dll
diff --git a/src/ResourceManager/Storage/Commands.Management.Storage/packages.config b/src/ResourceManager/Storage/Commands.Management.Storage/packages.config
index 2f7440be40e7..3bef469f4a12 100644
--- a/src/ResourceManager/Storage/Commands.Management.Storage/packages.config
+++ b/src/ResourceManager/Storage/Commands.Management.Storage/packages.config
@@ -11,5 +11,5 @@
-
+
\ No newline at end of file
diff --git a/src/ServiceManagement/Services/Commands.Utilities/packages.config b/src/ServiceManagement/Services/Commands.Utilities/packages.config
index 5eca387ba820..8271706ce7d0 100644
--- a/src/ServiceManagement/Services/Commands.Utilities/packages.config
+++ b/src/ServiceManagement/Services/Commands.Utilities/packages.config
@@ -8,14 +8,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/Storage/Commands.Storage.Test/Commands.Storage.Test.Netcore.csproj b/src/Storage/Commands.Storage.Test/Commands.Storage.Test.Netcore.csproj
index 0b7799e61760..44adbdf73c3f 100644
--- a/src/Storage/Commands.Storage.Test/Commands.Storage.Test.Netcore.csproj
+++ b/src/Storage/Commands.Storage.Test/Commands.Storage.Test.Netcore.csproj
@@ -24,8 +24,8 @@
-
-
+
+
diff --git a/src/Storage/Commands.Storage.Test/Commands.Storage.Test.csproj b/src/Storage/Commands.Storage.Test/Commands.Storage.Test.csproj
index 0068b079df47..7c747b2493cf 100644
--- a/src/Storage/Commands.Storage.Test/Commands.Storage.Test.csproj
+++ b/src/Storage/Commands.Storage.Test/Commands.Storage.Test.csproj
@@ -56,12 +56,12 @@
false
-
- ..\..\packages\WindowsAzure.Storage.9.0.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
+
+ ..\..\packages\WindowsAzure.Storage.9.3.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
True
-
- ..\..\packages\Microsoft.Azure.Storage.DataMovement.0.7.1\lib\net45\Microsoft.WindowsAzure.Storage.DataMovement.dll
+
+ ..\..\packages\Microsoft.Azure.Storage.DataMovement.0.8.1\lib\net45\Microsoft.WindowsAzure.Storage.DataMovement.dll
..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll
diff --git a/src/Storage/Commands.Storage.Test/Common/PSServicePropertiesTest.cs b/src/Storage/Commands.Storage.Test/Common/PSServicePropertiesTest.cs
index 379e414dd41f..8c8a4af93966 100644
--- a/src/Storage/Commands.Storage.Test/Common/PSServicePropertiesTest.cs
+++ b/src/Storage/Commands.Storage.Test/Common/PSServicePropertiesTest.cs
@@ -71,6 +71,10 @@ public void ValidateParseServicePropertiesTest()
serviceProperties.DeleteRetentionPolicy = new DeleteRetentionPolicy();
serviceProperties.DeleteRetentionPolicy.Enabled = true;
serviceProperties.DeleteRetentionPolicy.RetentionDays = 5;
+ serviceProperties.StaticWebsite = new StaticWebsiteProperties();
+ serviceProperties.StaticWebsite.Enabled = true;
+ serviceProperties.StaticWebsite.IndexDocument = "IndexDocument";
+ serviceProperties.StaticWebsite.ErrorDocument404Path = "ErrorDocument404Path";
PSSeriviceProperties pSSeriviceProperties = new PSSeriviceProperties(serviceProperties);
CompareServiceProperties(pSSeriviceProperties, serviceProperties);
@@ -119,6 +123,12 @@ static private void CompareServiceProperties(PSSeriviceProperties pSSeriviceProp
Assert.AreEqual(serviceProperties.DeleteRetentionPolicy.Enabled, pSSeriviceProperties.DeleteRetentionPolicy.Enabled);
Assert.AreEqual(serviceProperties.DeleteRetentionPolicy.RetentionDays, pSSeriviceProperties.DeleteRetentionPolicy.RetentionDays);
}
+ if ((pSSeriviceProperties != null && pSSeriviceProperties.StaticWebsite != null) || (serviceProperties != null && serviceProperties.StaticWebsite != null))
+ {
+ Assert.AreEqual(serviceProperties.StaticWebsite.Enabled, pSSeriviceProperties.StaticWebsite.Enabled);
+ Assert.AreEqual(serviceProperties.StaticWebsite.IndexDocument, pSSeriviceProperties.StaticWebsite.IndexDocument);
+ Assert.AreEqual(serviceProperties.StaticWebsite.ErrorDocument404Path, pSSeriviceProperties.StaticWebsite.ErrorDocument404Path);
+ }
}
///
diff --git a/src/Storage/Commands.Storage.Test/packages.config b/src/Storage/Commands.Storage.Test/packages.config
index 2650e1d5158f..851277daff77 100644
--- a/src/Storage/Commands.Storage.Test/packages.config
+++ b/src/Storage/Commands.Storage.Test/packages.config
@@ -5,7 +5,7 @@
-
+
@@ -24,7 +24,7 @@
-
+
diff --git a/src/Storage/Commands.Storage/Azure.Storage.psd1 b/src/Storage/Commands.Storage/Azure.Storage.psd1
index a2f6e9b125b9..b8538dd20c68 100644
--- a/src/Storage/Commands.Storage/Azure.Storage.psd1
+++ b/src/Storage/Commands.Storage/Azure.Storage.psd1
@@ -126,7 +126,9 @@ CmdletsToExport = 'Get-AzureStorageTable', 'New-AzureStorageTableSASToken',
'Stop-AzureStorageBlobCopy', 'Update-AzureStorageServiceProperty',
'Get-AzureStorageServiceProperty',
'Enable-AzureStorageDeleteRetentionPolicy',
- 'Disable-AzureStorageDeleteRetentionPolicy'
+ 'Disable-AzureStorageDeleteRetentionPolicy',
+ 'Enable-AzureStorageStaticWebsite',
+ 'Disable-AzureStorageStaticWebsite'
# Variables to export from this module
# VariablesToExport = @()
diff --git a/src/Storage/Commands.Storage/Blob/StorageDataMovementCmdletBase.cs b/src/Storage/Commands.Storage/Blob/StorageDataMovementCmdletBase.cs
index ee9ea8a1942e..0261c4538bdd 100644
--- a/src/Storage/Commands.Storage/Blob/StorageDataMovementCmdletBase.cs
+++ b/src/Storage/Commands.Storage/Blob/StorageDataMovementCmdletBase.cs
@@ -21,6 +21,7 @@ namespace Microsoft.WindowsAzure.Commands.Storage.Blob
using System;
using System.Globalization;
using System.Management.Automation;
+ using System.Threading.Tasks;
public class StorageDataMovementCmdletBase : StorageCloudBlobCmdletBase, IDisposable
{
@@ -53,6 +54,17 @@ protected bool ConfirmOverwrite(object source, object destination)
return overwrite || OutputStream.ConfirmAsync(overwriteMessage).Result;
}
+ ///
+ /// Confirm the overwrite operation
+ ///
+ /// Confirmation message
+ /// True if the opeation is confirmed, otherwise return false
+ protected async Task ConfirmOverwriteAsync(object source, object destination)
+ {
+ string overwriteMessage = string.Format(CultureInfo.CurrentCulture, Resources.OverwriteConfirmation, Util.ConvertToString(destination));
+ return overwrite || await OutputStream.ConfirmAsync(overwriteMessage);
+ }
+
///
/// On Task run successfully
///
@@ -78,11 +90,11 @@ protected SingleTransferContext GetTransferContext(DataMovementUserData userData
transferContext.ClientRequestId = CmdletOperationContext.ClientRequestId;
if (overwrite)
{
- transferContext.ShouldOverwriteCallback = TransferContext.ForceOverwrite;
+ transferContext.ShouldOverwriteCallbackAsync = TransferContext.ForceOverwrite;
}
else
{
- transferContext.ShouldOverwriteCallback = ConfirmOverwrite;
+ transferContext.ShouldOverwriteCallbackAsync = ConfirmOverwriteAsync;
}
transferContext.ProgressHandler = new TransferProgressHandler((transferProgress) =>
diff --git a/src/Storage/Commands.Storage/ChangeLog.md b/src/Storage/Commands.Storage/ChangeLog.md
index a471faf8bb58..05ed7c45be01 100644
--- a/src/Storage/Commands.Storage/ChangeLog.md
+++ b/src/Storage/Commands.Storage/ChangeLog.md
@@ -18,6 +18,12 @@
- Additional information about change #1
-->
## Current Release
+* Upgrade to Azure Storage Client Library 9.3.0 and Azure Storage DataMovement Library 0.8.1
+* Support create Storage Context with OAuth.
+ - New-AzureStorageContext
+* Support Static Website configuration
+ - Enable-AzureStorageStaticWebsite
+ - Disable-AzureStorageStaticWebsite
## Version 4.5.0
* Remove the 5TB limitation for Azure File Share quota
diff --git a/src/Storage/Commands.Storage/Commands.Storage.Netcore.csproj b/src/Storage/Commands.Storage/Commands.Storage.Netcore.csproj
index 054f68ca0513..61a419b02da9 100644
--- a/src/Storage/Commands.Storage/Commands.Storage.Netcore.csproj
+++ b/src/Storage/Commands.Storage/Commands.Storage.Netcore.csproj
@@ -29,8 +29,8 @@
-
-
+
+
@@ -72,4 +72,4 @@
-
\ No newline at end of file
+
diff --git a/src/Storage/Commands.Storage/Commands.Storage.csproj b/src/Storage/Commands.Storage/Commands.Storage.csproj
index edae59b0019c..8c7129dcf6c4 100644
--- a/src/Storage/Commands.Storage/Commands.Storage.csproj
+++ b/src/Storage/Commands.Storage/Commands.Storage.csproj
@@ -47,18 +47,19 @@
false
-
- ..\..\packages\WindowsAzure.Storage.9.0.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
+
+ ..\..\packages\WindowsAzure.Storage.9.3.0\lib\net45\Microsoft.WindowsAzure.Storage.dll
True
-
- ..\..\packages\Microsoft.Azure.Storage.DataMovement.0.7.1\lib\net45\Microsoft.WindowsAzure.Storage.DataMovement.dll
+
+ ..\..\packages\Microsoft.Azure.Storage.DataMovement.0.8.1\lib\net45\Microsoft.WindowsAzure.Storage.DataMovement.dll
+ True
..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll
- ..\..\packages\Microsoft.Azure.PowerShell.ResourceManager.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.ResourceManager.Common.dll
+ ..\..\packages\Microsoft.Azure.PowerShell.ResourceManager.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.ResourceManager.Common.dll
True
@@ -105,6 +106,8 @@
+
+
diff --git a/src/Storage/Commands.Storage/Common/Cmdlet/DisableAzureStorageStaticWebsite.cs b/src/Storage/Commands.Storage/Common/Cmdlet/DisableAzureStorageStaticWebsite.cs
new file mode 100644
index 000000000000..a2d3d9bdc297
--- /dev/null
+++ b/src/Storage/Commands.Storage/Common/Cmdlet/DisableAzureStorageStaticWebsite.cs
@@ -0,0 +1,83 @@
+// ----------------------------------------------------------------------------------
+//
+// Copyright Microsoft Corporation
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ----------------------------------------------------------------------------------
+
+namespace Microsoft.WindowsAzure.Commands.Storage.Common.Cmdlet
+{
+ using Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel;
+ using Microsoft.WindowsAzure.Storage.Shared.Protocol;
+ using System;
+ using System.Management.Automation;
+ using System.Security.Permissions;
+
+ ///
+ /// Disable azure storage service StaticWebsite, currently only available on Blob service
+ ///
+ [Cmdlet(VerbsLifecycle.Disable, Azure.Commands.ResourceManager.Common.AzureRMConstants.AzurePrefix + "StorageStaticWebsite", SupportsShouldProcess = true),
+ OutputType(typeof(PSStaticWebsiteProperties))]
+ public class DisableAzureStorageServiceStaticWebsiteCommand : StorageCloudBlobCmdletBase
+ {
+ [Parameter(Mandatory = false)]
+ public SwitchParameter PassThru { get; set; }
+
+ // Overwrite the useless parameter
+ public override int? ServerTimeoutPerRequest { get; set; }
+ public override int? ClientTimeoutPerRequest { get; set; }
+ public override int? ConcurrentTaskCount { get; set; }
+
+ public DisableAzureStorageServiceStaticWebsiteCommand()
+ {
+ EnableMultiThread = false;
+ }
+
+ ///
+ /// Update the specified StaticWebsite Properties according to the input
+ ///
+ /// StaticWebsite Properties
+ internal void DisableStaticWebsiteProperties(ServiceProperties serviceProperties)
+ {
+ if (serviceProperties.StaticWebsite == null)
+ {
+ serviceProperties.StaticWebsite = new StaticWebsiteProperties();
+ }
+
+ serviceProperties.StaticWebsite.Enabled = false;
+ serviceProperties.StaticWebsite.IndexDocument = null;
+ serviceProperties.StaticWebsite.ErrorDocument404Path = null;
+ }
+
+ ///
+ /// Execute command
+ ///
+ [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
+ public override void ExecuteCmdlet()
+ {
+ StorageServiceType serviceType = StorageServiceType.Blob;
+
+ if (ShouldProcess(serviceType.ToString(), "Disable Static Website"))
+ {
+ ServiceProperties serviceProperties = Channel.GetStorageServiceProperties(serviceType, GetRequestOptions(serviceType), OperationContext);
+
+ DisableStaticWebsiteProperties(serviceProperties);
+
+ Channel.SetStorageServiceProperties(serviceType, serviceProperties,
+ GetRequestOptions(serviceType), OperationContext);
+
+ if (PassThru)
+ {
+ WriteObject(PSStaticWebsiteProperties.ParsePSStaticWebsiteProperties(serviceProperties.StaticWebsite));
+ }
+ }
+ }
+ }
+}
diff --git a/src/Storage/Commands.Storage/Common/Cmdlet/EnableAzureStorageStaticWebsite.cs b/src/Storage/Commands.Storage/Common/Cmdlet/EnableAzureStorageStaticWebsite.cs
new file mode 100644
index 000000000000..cd64fbbb76a0
--- /dev/null
+++ b/src/Storage/Commands.Storage/Common/Cmdlet/EnableAzureStorageStaticWebsite.cs
@@ -0,0 +1,88 @@
+// ----------------------------------------------------------------------------------
+//
+// Copyright Microsoft Corporation
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ----------------------------------------------------------------------------------
+
+namespace Microsoft.WindowsAzure.Commands.Storage.Common.Cmdlet
+{
+ using Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel;
+ using Microsoft.WindowsAzure.Storage.Shared.Protocol;
+ using System;
+ using System.Management.Automation;
+ using System.Security.Permissions;
+
+ ///
+ /// Enable azure storage service StaticWebsite, currently only enabled on Blob service
+ ///
+ [Cmdlet(VerbsLifecycle.Enable, Azure.Commands.ResourceManager.Common.AzureRMConstants.AzurePrefix + "StorageStaticWebsite", SupportsShouldProcess = true),
+ OutputType(typeof(PSStaticWebsiteProperties))]
+ public class EnableAzureStorageServiceStaticWebsiteCommand : StorageCloudBlobCmdletBase
+ {
+ [Parameter(Mandatory = true, Position = 0, HelpMessage = "The name of the index document in each directory.")]
+ public string IndexDocument { get; set; }
+
+ [Parameter(Mandatory = true, Position = 1, HelpMessage = "the path to the error document that should be shown when a 404 is issued (meaning, when a browser requests a page that does not exist.)")]
+ public string ErrorDocument404Path { get; set; }
+
+ [Parameter(Mandatory = false)]
+ public SwitchParameter PassThru { get; set; }
+
+ // Overwrite the useless parameter
+ public override int? ServerTimeoutPerRequest { get; set; }
+ public override int? ClientTimeoutPerRequest { get; set; }
+ public override int? ConcurrentTaskCount { get; set; }
+
+ public EnableAzureStorageServiceStaticWebsiteCommand()
+ {
+ EnableMultiThread = false;
+ }
+
+ ///
+ /// Update the specified StaticWebsite Properties according to the input
+ ///
+ /// StaticWebsite Properties
+ internal void EnableStaticWebsiteProperties(ServiceProperties serviceProperties)
+ {
+ if (serviceProperties.StaticWebsite == null)
+ {
+ serviceProperties.StaticWebsite = new StaticWebsiteProperties();
+ }
+ serviceProperties.StaticWebsite.Enabled = true;
+ serviceProperties.StaticWebsite.IndexDocument = this.IndexDocument;
+ serviceProperties.StaticWebsite.ErrorDocument404Path = this.ErrorDocument404Path;
+ }
+
+ ///
+ /// Execute command
+ ///
+ [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
+ public override void ExecuteCmdlet()
+ {
+ StorageServiceType serviceType = StorageServiceType.Blob;
+
+ if (ShouldProcess(serviceType.ToString(), "Enable Static Website"))
+ {
+ ServiceProperties serviceProperties = Channel.GetStorageServiceProperties(serviceType, GetRequestOptions(serviceType), OperationContext);
+
+ EnableStaticWebsiteProperties(serviceProperties);
+
+ Channel.SetStorageServiceProperties(serviceType, serviceProperties,
+ GetRequestOptions(serviceType), OperationContext);
+
+ if (PassThru)
+ {
+ WriteObject(PSStaticWebsiteProperties.ParsePSStaticWebsiteProperties(serviceProperties.StaticWebsite));
+ }
+ }
+ }
+ }
+}
diff --git a/src/Storage/Commands.Storage/Common/Cmdlet/NewAzureStorageContext.cs b/src/Storage/Commands.Storage/Common/Cmdlet/NewAzureStorageContext.cs
index e18c00d29464..4e223daa3296 100644
--- a/src/Storage/Commands.Storage/Common/Cmdlet/NewAzureStorageContext.cs
+++ b/src/Storage/Commands.Storage/Common/Cmdlet/NewAzureStorageContext.cs
@@ -12,9 +12,11 @@
// limitations under the License.
// ----------------------------------------------------------------------------------
+using Microsoft.Azure.Commands.Common.Authentication;
using Microsoft.Azure.Commands.Common.Authentication.Abstractions;
using Microsoft.Azure.ServiceManagemenet.Common;
using Microsoft.WindowsAzure.Commands.Common;
+using Microsoft.WindowsAzure.Commands.Common.CustomAttributes;
using Microsoft.WindowsAzure.Commands.Common.Storage;
using Microsoft.WindowsAzure.Commands.Utilities.Common;
using Microsoft.WindowsAzure.Storage;
@@ -24,15 +26,27 @@
using System.Linq;
using System.Management.Automation;
using System.Security.Permissions;
+using System.Threading;
+using System.Threading.Tasks;
namespace Microsoft.WindowsAzure.Commands.Storage.Common.Cmdlet
{
///
/// New storage context
///
- [Cmdlet("New", Azure.Commands.ResourceManager.Common.AzureRMConstants.AzurePrefix + "StorageContext", DefaultParameterSetName = AccountNameKeyParameterSet),OutputType(typeof(AzureStorageContext))]
+ [Cmdlet("New", Azure.Commands.ResourceManager.Common.AzureRMConstants.AzurePrefix + "StorageContext", DefaultParameterSetName = AccountNameKeyParameterSet), OutputType(typeof(AzureStorageContext))]
public class NewAzureStorageContext : AzureDataCmdlet
{
+ ///
+ /// Default resourceId for storage OAuth tokens
+ ///
+ public const string StorageOAuthEndpointResourceValue = "https://storage.azure.com";
+
+ ///
+ /// The extension key to use for the storage token audience value
+ ///
+ public const string StorageOAuthEndpointResourceKey = "StorageOAuthEndpointResourceId";
+
///
/// Account name and key parameter set name
///
@@ -68,6 +82,16 @@ public class NewAzureStorageContext : AzureDataCmdlet
///
private const string AnonymousParameterSet = "AnonymousAccount";
+ ///
+ /// OAuth storage account parameter set name
+ ///
+ private const string OAuthParameterSet = "OAuthAccount";
+
+ ///
+ /// OAuth storage account parameter set name
+ ///
+ private const string OAuthEnvironmentParameterSet = "OAuthAccountEnvironment";
+
///
/// Anonymous storage account with azure environment parameter set name
///
@@ -86,6 +110,10 @@ public class NewAzureStorageContext : AzureDataCmdlet
Mandatory = true, ParameterSetName = SasTokenParameterSet)]
[Parameter(Position = 0, HelpMessage = StorageAccountNameHelpMessage,
Mandatory = true, ParameterSetName = SasTokenEnvironmentParameterSet)]
+ [Parameter(Position = 0, HelpMessage = StorageAccountNameHelpMessage,
+ Mandatory = true, ParameterSetName = OAuthParameterSet)]
+ [Parameter(Position = 0, HelpMessage = StorageAccountNameHelpMessage,
+ Mandatory = true, ParameterSetName = OAuthEnvironmentParameterSet)]
[ValidateNotNullOrEmpty]
public string StorageAccountName { get; set; }
@@ -135,6 +163,16 @@ public SwitchParameter Anonymous
private bool isAnonymous;
+ [Parameter(HelpMessage = "Use OAuth storage account", Mandatory = false, ParameterSetName = OAuthParameterSet)]
+ [Parameter(HelpMessage = "Use OAuth storage account", Mandatory = false, ParameterSetName = OAuthEnvironmentParameterSet)]
+ public SwitchParameter UseConnectedAccount
+ {
+ get { return isOAuth; }
+ set { isOAuth = value; }
+ }
+
+ private bool isOAuth = true;
+
private const string ProtocolHelpMessage = "Protocol specification (HTTP or HTTPS), default is HTTPS";
[Parameter(HelpMessage = ProtocolHelpMessage,
ParameterSetName = AccountNameKeyParameterSet)]
@@ -146,6 +184,10 @@ public SwitchParameter Anonymous
ParameterSetName = AnonymousEnvironmentParameterSet)]
[Parameter(HelpMessage = ProtocolHelpMessage,
ParameterSetName = SasTokenParameterSet)]
+ [Parameter(HelpMessage = ProtocolHelpMessage,
+ ParameterSetName = OAuthParameterSet)]
+ [Parameter(HelpMessage = ProtocolHelpMessage,
+ ParameterSetName = OAuthEnvironmentParameterSet)]
[ValidateSet(StorageNouns.HTTP, StorageNouns.HTTPS, IgnoreCase = true)]
public string Protocol
{
@@ -159,6 +201,7 @@ public string Protocol
[Parameter(HelpMessage = EndPointHelpMessage, ParameterSetName = AccountNameKeyParameterSet)]
[Parameter(HelpMessage = EndPointHelpMessage, ParameterSetName = AnonymousParameterSet)]
[Parameter(HelpMessage = EndPointHelpMessage, ParameterSetName = SasTokenParameterSet)]
+ [Parameter(HelpMessage = EndPointHelpMessage, ParameterSetName = OAuthParameterSet)]
public string Endpoint
{
get { return storageEndpoint; }
@@ -174,6 +217,7 @@ public string Endpoint
[Parameter(HelpMessage = AzureEnvironmentHelpMessage, ParameterSetName = AnonymousEnvironmentParameterSet,
ValueFromPipelineByPropertyName = true, Mandatory = true)]
[Parameter(HelpMessage = AzureEnvironmentHelpMessage, ParameterSetName = SasTokenEnvironmentParameterSet, Mandatory = true)]
+ [Parameter(HelpMessage = AzureEnvironmentHelpMessage, ParameterSetName = OAuthEnvironmentParameterSet, Mandatory = true)]
public string Environment
{
get { return environmentName; }
@@ -280,6 +324,94 @@ internal CloudStorageAccount GetAnonymousStorageAccountFromAzureEnvironment(stri
return GetStorageAccountWithAzureEnvironment(credential, storageAccountName, useHttps, azureEnvironmentName);
}
+ ///
+ /// Get OAuth storage account
+ ///
+ /// Storage account name, it's used for build end point
+ ///
+ ///
+ /// A storage account
+ internal CloudStorageAccount GetStorageAccountByOAuth(string storageAccountName, bool useHttps, string storageEndpoint = "")
+ {
+ IAccessToken accessToken = CreateOAuthToken();
+ TokenCredential tokenCredential = new TokenCredential(GetTokenStrFromAccessToken(accessToken), GetTokenRenewer(accessToken), null, new TimeSpan(0, 1, 0));
+ StorageCredentials credential = new StorageCredentials(tokenCredential);
+ return GetStorageAccountWithEndPoint(credential, storageAccountName, useHttps, storageEndpoint);
+ }
+
+ ///
+ /// Get OAuth storage account
+ ///
+ /// Storage account name, it's used for build end point
+ ///
+ ///
+ /// A storage account
+ internal CloudStorageAccount GetStorageAccountByOAuthFromAzureEnvironment(string storageAccountName, bool useHttps, string azureEnvironmentName = "")
+ {
+ IAccessToken accessToken = CreateOAuthToken();
+ TokenCredential tokenCredential = new TokenCredential(GetTokenStrFromAccessToken(accessToken), GetTokenRenewer(accessToken), null, new TimeSpan(0, 1, 0));
+ StorageCredentials credential = new StorageCredentials(tokenCredential);
+ return GetStorageAccountWithAzureEnvironment(credential, storageAccountName, useHttps, azureEnvironmentName);
+ }
+
+ private RenewTokenFuncAsync GetTokenRenewer(IAccessToken accessToken)
+ {
+#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
+ RenewTokenFuncAsync renewer = async (Object state, CancellationToken cancellationToken) =>
+#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
+ {
+ var tokenStr = GetTokenStrFromAccessToken(accessToken);
+ return new NewTokenAndFrequency(tokenStr, new TimeSpan(0, 1, 0));
+ };
+ return renewer;
+ }
+
+ private IAzureEnvironment EnsureStorageOAuthAudienceSet(IAzureEnvironment environment)
+ {
+ if (environment != null)
+ {
+ if (!environment.IsPropertySet(StorageOAuthEndpointResourceKey))
+ {
+ environment.SetProperty(StorageOAuthEndpointResourceKey, StorageOAuthEndpointResourceValue);
+ }
+ }
+
+ return environment;
+ }
+
+ ///
+ /// Create a OAuth Token
+ ///
+ /// the token
+ private IAccessToken CreateOAuthToken()
+ {
+ IAccessToken accessToken = AzureSession.Instance.AuthenticationFactory.Authenticate(
+ DefaultContext.Account,
+ EnsureStorageOAuthAudienceSet(DefaultContext.Environment),
+ DefaultContext.Tenant.Id,
+ null,
+ ShowDialog.Never,
+ null,
+ StorageOAuthEndpointResourceKey);
+ return accessToken;
+ }
+
+ ///
+ /// Get the token string from the accesstoken
+ ///
+ /// the token
+ /// token string
+ private string GetTokenStrFromAccessToken(IAccessToken accessToken)
+ {
+ var tokenStr = string.Empty;
+ accessToken.AuthorizeRequest((tokenType, tokenValue) =>
+ {
+ tokenStr = tokenValue;
+ });
+ WriteDebug(DateTime.Now.ToString() + ": token:" + tokenStr);
+ return tokenStr;
+ }
+
///
/// Get storage account and use specific end point
///
@@ -433,6 +565,12 @@ public override void ExecuteCmdlet()
case AnonymousEnvironmentParameterSet:
account = GetAnonymousStorageAccountFromAzureEnvironment(StorageAccountName, useHttps, environmentName);
break;
+ case OAuthParameterSet:
+ account = GetStorageAccountByOAuth(StorageAccountName, useHttps, storageEndpoint);
+ break;
+ case OAuthEnvironmentParameterSet:
+ account = GetStorageAccountByOAuthFromAzureEnvironment(StorageAccountName, useHttps, environmentName);
+ break;
default:
throw new ArgumentException(Resources.DefaultStorageCredentialsNotFound);
}
diff --git a/src/Storage/Commands.Storage/Common/StorageNouns.cs b/src/Storage/Commands.Storage/Common/StorageNouns.cs
index e010138f9e57..766f30ca206d 100644
--- a/src/Storage/Commands.Storage/Common/StorageNouns.cs
+++ b/src/Storage/Commands.Storage/Common/StorageNouns.cs
@@ -109,6 +109,7 @@ public static class StorageNouns
///
public const string StorageServiceProperty = "AzureStorageServiceProperty";
+ ///
/// Azure storage Service Delete Retention Policy
///
public const string ServiceDeleteRetentionPolicy = "AzureStorageDeleteRetentionPolicy";
@@ -168,7 +169,6 @@ public static class StorageNouns
///
public const string ContainerStoredAccessPolicy = "AzureStorageContainerStoredAccessPolicy";
-
///
/// Azure storage container stored access policy
///
diff --git a/src/Storage/Commands.Storage/File/StorageFileDataManagementCmdletBase.cs b/src/Storage/Commands.Storage/File/StorageFileDataManagementCmdletBase.cs
index 5b890473fc0f..3f058eb1a752 100644
--- a/src/Storage/Commands.Storage/File/StorageFileDataManagementCmdletBase.cs
+++ b/src/Storage/Commands.Storage/File/StorageFileDataManagementCmdletBase.cs
@@ -20,6 +20,7 @@ namespace Microsoft.WindowsAzure.Commands.Storage.File
using Microsoft.WindowsAzure.Storage.DataMovement;
using System.Globalization;
using System.Management.Automation;
+ using System.Threading.Tasks;
public abstract class StorageFileDataManagementCmdletBase : AzureStorageFileCmdletBase
{
@@ -58,6 +59,17 @@ protected bool ConfirmOverwrite(object source, object destination)
return this.Force || this.OutputStream.ConfirmAsync(string.Format(CultureInfo.CurrentCulture, Resources.OverwriteConfirmation, Util.ConvertToString(destination))).Result;
}
+ ///
+ /// Confirm the overwrite operation
+ ///
+ /// Indicating the source.
+ /// Indicating the destination.
+ /// Returns a value indicating whether to overwrite.
+ protected async Task ConfirmOverwriteAsync(object source, object destination)
+ {
+ return this.Force || await this.OutputStream.ConfirmAsync(string.Format(CultureInfo.CurrentCulture, Resources.OverwriteConfirmation, Util.ConvertToString(destination)));
+ }
+
protected override void BeginProcessing()
{
base.BeginProcessing();
@@ -85,11 +97,11 @@ protected SingleTransferContext GetTransferContext(ProgressRecord record, long t
transferContext.ClientRequestId = CmdletOperationContext.ClientRequestId;
if (this.Force)
{
- transferContext.ShouldOverwriteCallback = TransferContext.ForceOverwrite;
+ transferContext.ShouldOverwriteCallbackAsync = TransferContext.ForceOverwrite;
}
else
{
- transferContext.ShouldOverwriteCallback = ConfirmOverwrite;
+ transferContext.ShouldOverwriteCallbackAsync = ConfirmOverwriteAsync;
}
transferContext.ProgressHandler = new TransferProgressHandler((transferProgress) =>
diff --git a/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.format.ps1xml b/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.format.ps1xml
index 45a110d2a076..7b045928c0fd 100644
--- a/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.format.ps1xml
+++ b/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.format.ps1xml
@@ -412,6 +412,22 @@
$_.DeleteRetentionPolicy.RetentionDays
+
+
+ $_.StaticWebsite.Enabled
+
+
+
+ $_.StaticWebsite.IndexDocument
+
+
+
+ $_.StaticWebsite.ErrorDocument404Path
+
+
+ $_.Cors
+
+
DefaultServiceVersion
diff --git a/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.generated.format.ps1xml b/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.generated.format.ps1xml
index 9899c6afd361..a36a62b0fac0 100644
--- a/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.generated.format.ps1xml
+++ b/src/Storage/Commands.Storage/Microsoft.WindowsAzure.Commands.Storage.generated.format.ps1xml
@@ -142,6 +142,18 @@
$_.DeleteRetentionPolicy.RetentionDays
+
+
+ $_.StaticWebsite.Enabled
+
+
+
+ $_.StaticWebsite.IndexDocument
+
+
+
+ $_.StaticWebsite.ErrorDocument404Path
+
$_.Cors
diff --git a/src/Storage/Commands.Storage/Model/ResourceModel/PSSeriviceProperties.cs b/src/Storage/Commands.Storage/Model/ResourceModel/PSSeriviceProperties.cs
index d9198735d288..90f6a2d7f4b1 100644
--- a/src/Storage/Commands.Storage/Model/ResourceModel/PSSeriviceProperties.cs
+++ b/src/Storage/Commands.Storage/Model/ResourceModel/PSSeriviceProperties.cs
@@ -35,6 +35,7 @@ public PSSeriviceProperties(ServiceProperties properties)
this.DefaultServiceVersion = properties.DefaultServiceVersion;
this.Cors = PSCorsRule.ParseCorsRules(properties.Cors);
this.DeleteRetentionPolicy = PSDeleteRetentionPolicy.ParsePSDeleteRetentionPolicy(properties.DeleteRetentionPolicy);
+ this.StaticWebsite = PSStaticWebsiteProperties.ParsePSStaticWebsiteProperties(properties.StaticWebsite);
}
}
@@ -75,6 +76,13 @@ public PSSeriviceProperties(ServiceProperties properties)
[Ps1Xml(Label = "DeleteRetentionPolicy.Enabled", Target = ViewControl.List, ScriptBlock = "$_.DeleteRetentionPolicy.Enabled", Position = 9)]
[Ps1Xml(Label = "DeleteRetentionPolicy.RetentionDays", Target = ViewControl.List, ScriptBlock = "$_.DeleteRetentionPolicy.RetentionDays", Position = 10)]
public PSDeleteRetentionPolicy DeleteRetentionPolicy { get; set; }
+ //
+ // Summary:
+ // Gets or sets the service properties pertaining to StaticWebsites
+ [Ps1Xml(Label = "StaticWebsite.Enabled", Target = ViewControl.List, ScriptBlock = "$_.StaticWebsite.Enabled", Position = 11)]
+ [Ps1Xml(Label = "StaticWebsite.IndexDocument", Target = ViewControl.List, ScriptBlock = "$_.StaticWebsite.IndexDocument", Position = 12)]
+ [Ps1Xml(Label = "StaticWebsite.ErrorDocument404Path", Target = ViewControl.List, ScriptBlock = "$_.StaticWebsite.ErrorDocument404Path", Position = 13)]
+ public PSStaticWebsiteProperties StaticWebsite { get; set; }
}
// Wrapper of DeleteRetentionPolicy
@@ -104,4 +112,40 @@ public static PSDeleteRetentionPolicy ParsePSDeleteRetentionPolicy(DeleteRetenti
// Gets or Sets the number of days on the DeleteRetentionPolicy.
public int? RetentionDays { get; set; }
}
+
+ // Wrapper of StaticWebsiteProperties
+ public class PSStaticWebsiteProperties
+ {
+ //
+ // Summary:
+ // Parse DeleteRetentionPolicy object in SDK to wrapped PSDeleteRetentionPolicy object
+ public static PSStaticWebsiteProperties ParsePSStaticWebsiteProperties(StaticWebsiteProperties staticWebsiteProperties)
+ {
+ if (staticWebsiteProperties == null)
+ {
+ return null;
+ }
+ PSStaticWebsiteProperties psProperties = new PSStaticWebsiteProperties();
+ psProperties.Enabled = staticWebsiteProperties.Enabled;
+ psProperties.IndexDocument = staticWebsiteProperties.IndexDocument;
+ psProperties.ErrorDocument404Path = staticWebsiteProperties.ErrorDocument404Path;
+ return psProperties;
+ }
+
+ //
+ // Summary:
+ // True if static websites should be enabled on the blob service for the corresponding
+ // Storage Account.
+ public bool Enabled { get; set; }
+ //
+ // Summary:
+ // Gets or sets a string representing the name of the index document in each directory.
+ public string IndexDocument { get; set; }
+ //
+ // Summary:
+ // Gets or sets a string representing the path to the error document that should
+ // be shown when a 404 is issued (meaning, when a browser requests a page that does
+ // not exist.)
+ public string ErrorDocument404Path { get; set; }
+ }
}
diff --git a/src/Storage/Commands.Storage/help/Azure.Storage.md b/src/Storage/Commands.Storage/help/Azure.Storage.md
index e22eaea1d436..2fb2ef84c506 100644
--- a/src/Storage/Commands.Storage/help/Azure.Storage.md
+++ b/src/Storage/Commands.Storage/help/Azure.Storage.md
@@ -14,9 +14,15 @@ This topic displays help topics for the Azure Storage Cmdlets.
### [Disable-AzureStorageDeleteRetentionPolicy](Disable-AzureStorageDeleteRetentionPolicy.md)
Disable delete retention policy for the Azure Storage Blob service.
+### [Disable-AzureStorageStaticWebsite](Disable-AzureStorageStaticWebsite.md)
+Disable static website for the Azure Storage account.
+
### [Enable-AzureStorageDeleteRetentionPolicy](Enable-AzureStorageDeleteRetentionPolicy.md)
Enable delete retention policy for the Azure Storage Blob service.
+### [Enable-AzureStorageStaticWebsite](Enable-AzureStorageStaticWebsite.md)
+Enable static website for the Azure Storage account.
+
### [Get-AzureStorageBlob](Get-AzureStorageBlob.md)
Lists blobs in a container.
diff --git a/src/Storage/Commands.Storage/help/Disable-AzureStorageStaticWebsite.md b/src/Storage/Commands.Storage/help/Disable-AzureStorageStaticWebsite.md
new file mode 100644
index 000000000000..9c13fbfaa552
--- /dev/null
+++ b/src/Storage/Commands.Storage/help/Disable-AzureStorageStaticWebsite.md
@@ -0,0 +1,109 @@
+---
+external help file: Microsoft.WindowsAzure.Commands.Storage.dll-Help.xml
+Module Name: Azure.Storage
+online version: https://docs.microsoft.com/en-us/powershell/module/azure.storage/disable-azurestoragstaticwebsite
+schema: 2.0.0
+---
+
+# Disable-AzureStorageStaticWebsite
+
+## SYNOPSIS
+Disable static website for the Azure Storage account.
+
+## SYNTAX
+
+```
+Disable-AzureStorageStaticWebsite [-PassThru] [-Context ] [-WhatIf] [-Confirm]
+ []
+```
+
+## DESCRIPTION
+The **Disable-AzureStorageStaticWebsite** cmdlet disables static website for the Azure Storage account.
+
+## EXAMPLES
+
+### Example 1: Disable static website for a Azure Storage account
+```
+C:\PS>Disable-AzureStorageStaticWebsite
+```
+
+This command disables static website for a Azure Storage account.
+
+## PARAMETERS
+
+### -Context
+Azure Storage Context Object
+
+```yaml
+Type: IStorageContext
+Parameter Sets: (All)
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: True (ByPropertyName, ByValue)
+Accept wildcard characters: False
+```
+
+### -PassThru
+{{Fill PassThru Description}}
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Confirm
+Prompts you for confirmation before running the cmdlet.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases: cf
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -WhatIf
+Shows what would happen if the cmdlet runs.
+The cmdlet is not run.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases: wi
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### CommonParameters
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+### Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext
+
+## OUTPUTS
+
+### Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.PSStaticWebsiteProperties
+
+## NOTES
+
+## RELATED LINKS
+
diff --git a/src/Storage/Commands.Storage/help/Enable-AzureStorageStaticWebsite.md b/src/Storage/Commands.Storage/help/Enable-AzureStorageStaticWebsite.md
new file mode 100644
index 000000000000..e0d8c67308c9
--- /dev/null
+++ b/src/Storage/Commands.Storage/help/Enable-AzureStorageStaticWebsite.md
@@ -0,0 +1,139 @@
+---
+external help file: Microsoft.WindowsAzure.Commands.Storage.dll-Help.xml
+Module Name: Azure.Storage
+online version: https://docs.microsoft.com/en-us/powershell/module/azure.storage/enable-azurestoragstaticwebsite
+schema: 2.0.0
+---
+
+# Enable-AzureStorageStaticWebsite
+
+## SYNOPSIS
+Enable static website for the Azure Storage account.
+
+## SYNTAX
+
+```
+Enable-AzureStorageStaticWebsite [-IndexDocument] [-ErrorDocument404Path] [-PassThru]
+ [-Context ] [-WhatIf] [-Confirm] []
+```
+
+## DESCRIPTION
+The **Enable-AzureStorageStaticWebsite** cmdlet enables static website for the Azure Storage account.
+
+## EXAMPLES
+
+### Example 1: Enable static website for the Azure Storage account
+```
+C:\PS>Enable-AzureStorageStaticWebsite -IndexDocument $indexdoc -ErrorDocument404Path $errordoc
+```
+
+This command enables static website for the Azure Storage account.
+
+## PARAMETERS
+
+### -Context
+Azure Storage Context Object
+
+```yaml
+Type: IStorageContext
+Parameter Sets: (All)
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: True (ByPropertyName, ByValue)
+Accept wildcard characters: False
+```
+
+### -ErrorDocument404Path
+The path to the error document that should be shown when a 404 is issued (meaning, when a browser requests a page that does not exist.)
+
+```yaml
+Type: String
+Parameter Sets: (All)
+Aliases:
+
+Required: True
+Position: 1
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -IndexDocument
+The name of the index document in each directory.
+
+```yaml
+Type: String
+Parameter Sets: (All)
+Aliases:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -PassThru
+{{Fill PassThru Description}}
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Confirm
+Prompts you for confirmation before running the cmdlet.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases: cf
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -WhatIf
+Shows what would happen if the cmdlet runs.
+The cmdlet is not run.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: (All)
+Aliases: wi
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### CommonParameters
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+### Microsoft.Azure.Commands.Common.Authentication.Abstractions.IStorageContext
+
+## OUTPUTS
+
+### Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.PSStaticWebsiteProperties
+
+## NOTES
+
+## RELATED LINKS
+
diff --git a/src/Storage/Commands.Storage/help/New-AzureStorageContext.md b/src/Storage/Commands.Storage/help/New-AzureStorageContext.md
index 681755a9fb2f..56f24b755228 100644
--- a/src/Storage/Commands.Storage/help/New-AzureStorageContext.md
+++ b/src/Storage/Commands.Storage/help/New-AzureStorageContext.md
@@ -13,7 +13,13 @@ Creates an Azure Storage context.
## SYNTAX
-### AccountNameAndKey (Default)
+### OAuthAccount (Default)
+```
+New-AzureStorageContext [-StorageAccountName] [-UseConnectedAccount] [-Protocol ]
+ [-Endpoint ] []
+```
+
+### AccountNameAndKey
```
New-AzureStorageContext [-StorageAccountName] [-StorageAccountKey] [-Protocol ]
[-Endpoint ] []
@@ -49,6 +55,12 @@ New-AzureStorageContext [-StorageAccountName] -SasToken -Envir
[]
```
+### OAuthAccountEnvironment
+```
+New-AzureStorageContext [-StorageAccountName] [-UseConnectedAccount] [-Protocol ]
+ -Environment []
+```
+
### ConnectionString
```
New-AzureStorageContext -ConnectionString []
@@ -141,6 +153,14 @@ That token is for read, add, update, and delete permissions.
The second command creates a context for the account named ContosoGeneral that uses the SAS token stored in $SasToken, and then stores that context in the $Context variable.
The final command lists all the blobs associated with the container named ContosoMain by using the context stored in $Context.
+### Example 10: Create a context by using the OAuth Authentication
+```
+C:\PS>Connect-AzureRmAccount
+C:\PS> $Context = New-AzureStorageContext -StorageAccountName "myaccountname"
+```
+
+This command creates a context by using the OAuth Authentication.
+
## PARAMETERS
### -Anonymous
@@ -178,7 +198,7 @@ Specifies the endpoint for the Azure Storage context.
```yaml
Type: System.String
-Parameter Sets: AccountNameAndKey, AnonymousAccount, SasToken
+Parameter Sets: OAuthAccount, AccountNameAndKey, AnonymousAccount, SasToken
Aliases:
Required: False
@@ -207,7 +227,7 @@ Accept wildcard characters: False
```yaml
Type: System.String
-Parameter Sets: SasTokenWithAzureEnvironment
+Parameter Sets: SasTokenWithAzureEnvironment, OAuthAccountEnvironment
Aliases: Name, EnvironmentName
Required: True
@@ -237,7 +257,7 @@ Transfer Protocol (https/http).
```yaml
Type: System.String
-Parameter Sets: AccountNameAndKey, AccountNameAndKeyEnvironment, AnonymousAccount, AnonymousAccountEnvironment, SasToken
+Parameter Sets: OAuthAccount, AccountNameAndKey, AccountNameAndKeyEnvironment, AnonymousAccount, AnonymousAccountEnvironment, SasToken, OAuthAccountEnvironment
Aliases:
Accepted values: Http, Https
@@ -285,7 +305,7 @@ This cmdlet creates a context for the account that this parameter specifies.
```yaml
Type: System.String
-Parameter Sets: AccountNameAndKey, AccountNameAndKeyEnvironment, AnonymousAccount, AnonymousAccountEnvironment, SasToken, SasTokenWithAzureEnvironment
+Parameter Sets: OAuthAccount, AccountNameAndKey, AccountNameAndKeyEnvironment, AnonymousAccount, AnonymousAccountEnvironment, SasToken, SasTokenWithAzureEnvironment, OAuthAccountEnvironment
Aliases:
Required: True
@@ -295,6 +315,38 @@ Accept pipeline input: False
Accept wildcard characters: False
```
+### -UseConnectedAccount
+Indicates that this cmdlet creates an Azure Storage context with OAuth Authentication.
+The cmdlet will use OAuth Authentication by default, when other anthentication not specified.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: OAuthAccount, OAuthAccountEnvironment
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -UseConnectedAccount
+Indicates that this cmdlet creates an Azure Storage context with OAuth Authentication.
+The cmdlet will use OAuth Authentication by default, when other anthentication not specified.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: OAuthAccount, OAuthAccountEnvironment
+Aliases:
+
+Required: False
+Position: Named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
diff --git a/src/Storage/Commands.Storage/packages.config b/src/Storage/Commands.Storage/packages.config
index b220d16135eb..98c138610e9f 100644
--- a/src/Storage/Commands.Storage/packages.config
+++ b/src/Storage/Commands.Storage/packages.config
@@ -6,11 +6,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -19,7 +19,7 @@
-
+
@@ -28,5 +28,5 @@
-
+
\ No newline at end of file
diff --git a/tools/Common.Dependencies.Test.targets b/tools/Common.Dependencies.Test.targets
index 6fb594e839a8..387257946684 100644
--- a/tools/Common.Dependencies.Test.targets
+++ b/tools/Common.Dependencies.Test.targets
@@ -21,11 +21,11 @@
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.ScenarioTest.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.ScenarioTest.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ServiceManagement.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.ServiceManagement.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ServiceManagement.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.ServiceManagement.Common.dll
True
@@ -66,7 +66,7 @@
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.94-preview\tools\
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.96-preview\tools\
diff --git a/tools/Common.Dependencies.targets b/tools/Common.Dependencies.targets
index a7dfb4f056b1..7399a4204440 100644
--- a/tools/Common.Dependencies.targets
+++ b/tools/Common.Dependencies.targets
@@ -93,67 +93,67 @@
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Aks.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Aks.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Aks.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Aks.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.ResourceManager.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.ResourceManager.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authorization.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authorization.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authorization.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authorization.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Common.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Common.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Compute.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Compute.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Compute.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Compute.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Graph.Rbac.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Graph.RBAC.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Graph.Rbac.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Graph.RBAC.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.KeyVault.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.KeyVault.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.KeyVault.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.KeyVault.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Network.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Network.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Network.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Network.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ResourceManager.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.ResourceManager.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ResourceManager.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.ResourceManager.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.Storage.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.Storage.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.Management.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Storage.Management.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.Management.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Storage.Management.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Strategies.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Strategies.4.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Strategies.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Strategies.4.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Websites.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.WebSites.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Websites.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.WebSites.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.94-preview\tools\
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.96-preview\tools\
\ No newline at end of file
diff --git a/tools/Common.Netcore.Dependencies.Test.targets b/tools/Common.Netcore.Dependencies.Test.targets
index 7f9660413fc4..7df27796d9ff 100644
--- a/tools/Common.Netcore.Dependencies.Test.targets
+++ b/tools/Common.Netcore.Dependencies.Test.targets
@@ -10,7 +10,7 @@
-
+
@@ -19,7 +19,7 @@
- $(NugetPackageRoot)microsoft.azure.powershell.scenariotest.resourcemanager\1.0.94-preview\tools\
+ $(NugetPackageRoot)microsoft.azure.powershell.scenariotest.resourcemanager\1.0.96-preview\tools\
diff --git a/tools/Common.Netcore.Dependencies.targets b/tools/Common.Netcore.Dependencies.targets
index cda493c7a8fa..9482eaf403b2 100644
--- a/tools/Common.Netcore.Dependencies.targets
+++ b/tools/Common.Netcore.Dependencies.targets
@@ -3,21 +3,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -26,7 +26,7 @@
- $(NugetPackageRoot)microsoft.azure.powershell.storage\1.0.94-preview\tools\
+ $(NugetPackageRoot)microsoft.azure.powershell.storage\1.0.96-preview\tools\
diff --git a/tools/Common.ServiceManagement.Dependencies.Test.targets b/tools/Common.ServiceManagement.Dependencies.Test.targets
index d1b9a7f070e1..f05e9effde86 100644
--- a/tools/Common.ServiceManagement.Dependencies.Test.targets
+++ b/tools/Common.ServiceManagement.Dependencies.Test.targets
@@ -38,12 +38,12 @@
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.ScenarioTest.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.ScenarioTest.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.1.0.94-preview\tools\
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ScenarioTest.1.0.96-preview\tools\
diff --git a/tools/Common.ServiceManagement.Dependencies.targets b/tools/Common.ServiceManagement.Dependencies.targets
index fde9636c31f2..13f9796a9053 100644
--- a/tools/Common.ServiceManagement.Dependencies.targets
+++ b/tools/Common.ServiceManagement.Dependencies.targets
@@ -186,35 +186,35 @@
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authorization.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authorization.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Authorization.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authorization.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Common.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Common.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ServiceManagement.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.ServiceManagement.Common.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.ServiceManagement.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.ServiceManagement.Common.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.Storage.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.Storage.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.Management.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Storage.Management.dll
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.Management.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Storage.Management.dll
True
- $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.94-preview\tools\
+ $(LibraryNugetPackageFolder)\Microsoft.Azure.PowerShell.Storage.1.0.96-preview\tools\
\ No newline at end of file
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.94-preview.nupkg
deleted file mode 100644
index d642441ca0fe..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..0c6be53e55df
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Aks.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.94-preview.nupkg
deleted file mode 100644
index 105e0e1f6954..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..370c2b708e20
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview.nupkg
deleted file mode 100644
index 57aa119b7fc6..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..43a18efaf09a
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.94-preview.nupkg
deleted file mode 100644
index ee7dd55f756b..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..663085555623
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authentication.ResourceManager.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.94-preview.nupkg
deleted file mode 100644
index 3f714984f242..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..0f18cfabe920
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Authorization.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.94-preview.nupkg
deleted file mode 100644
index c151d0f2b648..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..ae88fd6579f8
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Common.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.94-preview.nupkg
deleted file mode 100644
index cd3dbfd7466e..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..1752ddcf2df5
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Compute.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.94-preview.nupkg
deleted file mode 100644
index 9a0fc116badc..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..710e4b14ef6a
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Graph.Rbac.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.94-preview.nupkg
deleted file mode 100644
index 5ef8b42c1e02..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..06cc84c16e6f
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.KeyVault.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.94-preview.nupkg
deleted file mode 100644
index 2e22cbdd11ee..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..5e01516b14cf
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Network.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.94-preview.nupkg
deleted file mode 100644
index b855b33fa2ad..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..610a909103d6
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.ResourceManager.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.94-preview.nupkg
deleted file mode 100644
index 0fb763fe6dce..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..6a19a7e4f380
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.94-preview.nupkg
deleted file mode 100644
index eb08a8f516ef..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..dc406153a1f3
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.ScenarioTest.ResourceManager.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.94-preview.nupkg
deleted file mode 100644
index 37ad9e49a5a2..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..e692b0ff0501
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.ServiceManagement.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.94-preview.nupkg
deleted file mode 100644
index 05448f88ec1b..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..b9def3dc456e
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.94-preview.nupkg
deleted file mode 100644
index a9ca005f119c..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..4c447af23d54
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Storage.Management.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.94-preview.nupkg
deleted file mode 100644
index b068c8fb8208..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..740085fc7259
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Strategies.1.0.96-preview.nupkg differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.94-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.94-preview.nupkg
deleted file mode 100644
index c0e77f6645d6..000000000000
Binary files a/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.94-preview.nupkg and /dev/null differ
diff --git a/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.96-preview.nupkg b/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.96-preview.nupkg
new file mode 100644
index 000000000000..68cefb5ca483
Binary files /dev/null and b/tools/LocalFeed/Microsoft.Azure.PowerShell.Websites.1.0.96-preview.nupkg differ
diff --git a/tools/RepoTasks/RepoTasks.CmdletsForTest/RepoTasks.CmdletsForTest.csproj b/tools/RepoTasks/RepoTasks.CmdletsForTest/RepoTasks.CmdletsForTest.csproj
index e701c7708469..fd4a815768e7 100644
--- a/tools/RepoTasks/RepoTasks.CmdletsForTest/RepoTasks.CmdletsForTest.csproj
+++ b/tools/RepoTasks/RepoTasks.CmdletsForTest/RepoTasks.CmdletsForTest.csproj
@@ -37,7 +37,7 @@
..\..\..\src\packages\Microsoft.ApplicationInsights.1.2.0\lib\net45\Microsoft.ApplicationInsights.dll
- ..\..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
+ ..\..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
..\..\..\src\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.dll
@@ -58,7 +58,7 @@
..\..\..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
- ..\..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
+ ..\..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
..\..\..\src\packages\Microsoft.WindowsAzure.Management.4.1.1\lib\net40\Microsoft.WindowsAzure.Management.dll
diff --git a/tools/RepoTasks/RepoTasks.CmdletsForTest/packages.config b/tools/RepoTasks/RepoTasks.CmdletsForTest/packages.config
index bd73747dcbc0..1e23fe42c242 100644
--- a/tools/RepoTasks/RepoTasks.CmdletsForTest/packages.config
+++ b/tools/RepoTasks/RepoTasks.CmdletsForTest/packages.config
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/tools/RepoTasks/RepoTasks.RemoteWorker/RepoTasks.RemoteWorker.csproj b/tools/RepoTasks/RepoTasks.RemoteWorker/RepoTasks.RemoteWorker.csproj
index d7cbea399cee..28c3c1dcb9cf 100644
--- a/tools/RepoTasks/RepoTasks.RemoteWorker/RepoTasks.RemoteWorker.csproj
+++ b/tools/RepoTasks/RepoTasks.RemoteWorker/RepoTasks.RemoteWorker.csproj
@@ -37,7 +37,7 @@
..\..\..\src\packages\Microsoft.ApplicationInsights.1.2.0\lib\net45\Microsoft.ApplicationInsights.dll
- ..\..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
+ ..\..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
..\..\..\src\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.dll
@@ -58,7 +58,7 @@
..\..\..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
- ..\..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
+ ..\..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
..\..\..\src\packages\Microsoft.WindowsAzure.Management.4.1.1\lib\net40\Microsoft.WindowsAzure.Management.dll
diff --git a/tools/RepoTasks/RepoTasks.RemoteWorker/packages.config b/tools/RepoTasks/RepoTasks.RemoteWorker/packages.config
index bd73747dcbc0..1e23fe42c242 100644
--- a/tools/RepoTasks/RepoTasks.RemoteWorker/packages.config
+++ b/tools/RepoTasks/RepoTasks.RemoteWorker/packages.config
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/tools/StaticAnalysis/StaticAnalysis.csproj b/tools/StaticAnalysis/StaticAnalysis.csproj
index 0f436fbd8ad9..3829d2dce57d 100644
--- a/tools/StaticAnalysis/StaticAnalysis.csproj
+++ b/tools/StaticAnalysis/StaticAnalysis.csproj
@@ -54,10 +54,10 @@
..\..\src\packages\Microsoft.Azure.Common.2.1.0\lib\net45\Microsoft.Azure.Common.NetFramework.dll
- ..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.94-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
+ ..\..\src\packages\Microsoft.Azure.PowerShell.Authentication.Abstractions.1.0.96-preview\lib\net452\Microsoft.Azure.Commands.Common.Authentication.Abstractions.dll
- ..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.94-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
+ ..\..\src\packages\Microsoft.Azure.PowerShell.Common.1.0.96-preview\lib\net452\Microsoft.WindowsAzure.Commands.Common.dll
..\..\src\packages\Microsoft.Rest.ClientRuntime.2.3.12\lib\net452\Microsoft.Rest.ClientRuntime.dll
diff --git a/tools/StaticAnalysis/packages.config b/tools/StaticAnalysis/packages.config
index f94f955370de..02c7c5700b35 100644
--- a/tools/StaticAnalysis/packages.config
+++ b/tools/StaticAnalysis/packages.config
@@ -7,8 +7,8 @@
-
-
+
+