/// <summary>
        /// Get directory properties
        /// </summary>
        /// <param name="shareServiceClient"></param>
        /// <returns></returns>
        private static async Task DirectoryPropertiesSample(ShareServiceClient shareServiceClient)
        {
            Console.WriteLine();

            // Create the share name -- use a guid in the name so it's unique.
            string      shareName   = "demotest-" + Guid.NewGuid();
            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);

            try
            {
                // Create share
                Console.WriteLine("Create Share");
                await shareClient.CreateIfNotExistsAsync();

                // Create directory
                Console.WriteLine("Create directory");
                ShareDirectoryClient rootDirectory = shareClient.GetRootDirectoryClient();

                // Fetch directory attributes
                ShareDirectoryProperties shareDirectoryProperties = await rootDirectory.GetPropertiesAsync();

                Console.WriteLine("Get directory properties:");
                Console.WriteLine("    ETag: {0}", shareDirectoryProperties.ETag);
                Console.WriteLine("    Last modified: {0}", shareDirectoryProperties.LastModified);
            }
            catch (RequestFailedException exRequest)
            {
                Common.WriteException(exRequest);
                Console.WriteLine(
                    "Please make sure your storage account is specified correctly in the app.config - then restart the sample.");
                Console.WriteLine("Press any key to exit");
                Console.ReadLine();
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine("    Exception thrown creating share.");
                Common.WriteException(ex);
                throw;
            }
            finally
            {
                // Delete share
                Console.WriteLine("Delete share");
                await shareClient.DeleteIfExistsAsync();
            }

            Console.WriteLine();
        }
        /// <summary>
        /// Manage share metadata
        /// </summary>
        /// <param name="shareServiceClient"></param>
        /// <returns></returns>
        private static async Task DirectoryMetadataSample(ShareServiceClient shareServiceClient)
        {
            Console.WriteLine();

            // Create the share name -- use a GUID in the name so it's unique.
            string      shareName   = "demotest-" + Guid.NewGuid();
            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);

            try
            {
                // Create share
                Console.WriteLine("Create Share");
                await shareClient.CreateIfNotExistsAsync();

                ShareDirectoryClient rootDirectory = shareClient.GetRootDirectoryClient();

                Console.WriteLine("Create the directory");
                // Get a directory client
                ShareDirectoryClient sampleDirectory = rootDirectory.GetSubdirectoryClient("sample-directory");
                await sampleDirectory.CreateIfNotExistsAsync();

                // Set directory metadata
                Console.WriteLine("Set directory metadata");

                var metadata = new Dictionary <string, string> {
                    { "key1", "value1" }, { "key2", "value2" }
                };
                await sampleDirectory.SetMetadataAsync(metadata);

                // Fetch directory attributes
                ShareDirectoryProperties shareDirectoryProperties = await sampleDirectory.GetPropertiesAsync();

                Console.WriteLine("Get directory metadata:");
                foreach (var keyValue in shareDirectoryProperties.Metadata)
                {
                    Console.WriteLine("    {0}: {1}", keyValue.Key, keyValue.Value);
                }
                Console.WriteLine();
            }
            catch (RequestFailedException exRequest)
            {
                Common.WriteException(exRequest);
                Console.WriteLine(
                    "Please make sure your storage account is specified correctly in the app.config - then restart the sample.");
                Console.WriteLine("Press any key to exit");
                Console.ReadLine();
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine("    Exception thrown creating share.");
                Common.WriteException(ex);
                throw;
            }
            finally
            {
                // Delete share
                Console.WriteLine("Delete share");
                await shareClient.DeleteIfExistsAsync();
            }
        }
Пример #3
0
 /// <summary>
 /// Azure storage file constructor from Track2 get file properties output
 /// </summary>
 /// <param name="file">Cloud file object</param>
 public AzureStorageFileDirectory(ShareDirectoryClient shareDirectoryClient, AzureStorageContext storageContext, ShareDirectoryProperties shareDirectoryProperties = null, ShareClientOptions clientOptions = null)
 {
     Name = shareDirectoryClient.Name;
     this.privateFileDirClient = shareDirectoryClient;
     CloudFileDirectory        = GetTrack1FileDirClient(shareDirectoryClient, storageContext.StorageAccount.Credentials);
     if (shareDirectoryProperties != null)
     {
         privateFileDirProperties = shareDirectoryProperties;
         LastModified             = shareDirectoryProperties.LastModified;
     }
     Context            = storageContext;
     shareClientOptions = clientOptions;
 }
Пример #4
0
        public override void ExecuteCmdlet()
        {
            CloudFileDirectory baseDirectory;

            switch (this.ParameterSetName)
            {
            case Constants.DirectoryParameterSetName:
                baseDirectory = this.Directory;
                break;

            case Constants.ShareNameParameterSetName:
                baseDirectory = this.BuildFileShareObjectFromName(this.ShareName).GetRootDirectoryReference();
                break;

            case Constants.ShareParameterSetName:
                baseDirectory = this.Share.GetRootDirectoryReference();
                break;

            default:
                throw new PSArgumentException(string.Format(CultureInfo.InvariantCulture, "Invalid parameter set name: {0}", this.ParameterSetName));
            }

            // when only track1 object input, will miss storage context, so need to build storage context for prepare the output object.
            if (this.Context == null)
            {
                this.Context = GetStorageContextFromTrack1FileServiceClient(baseDirectory.ServiceClient, DefaultContext);
            }

            ShareDirectoryClient baseDirClient = AzureStorageFileDirectory.GetTrack2FileDirClient(baseDirectory, ClientOptions);

            if (string.IsNullOrEmpty(this.Path))
            {
                ShareDirectoryGetFilesAndDirectoriesOptions listFileOptions = new ShareDirectoryGetFilesAndDirectoriesOptions();
                if (!this.ExcludeExtendedInfo.IsPresent)
                {
                    listFileOptions.Traits = ShareFileTraits.All;
                    listFileOptions.IncludeExtendedInfo = true;
                }
                Pageable <ShareFileItem>            fileItems     = baseDirClient.GetFilesAndDirectories(listFileOptions, this.CmdletCancellationToken);
                IEnumerable <Page <ShareFileItem> > fileitempages = fileItems.AsPages();
                foreach (var page in fileitempages)
                {
                    foreach (var file in page.Values)
                    {
                        if (!file.IsDirectory) // is file
                        {
                            ShareFileClient shareFileClient = baseDirClient.GetFileClient(file.Name);
                            WriteObject(new AzureStorageFile(shareFileClient, (AzureStorageContext)this.Context, file, ClientOptions));
                        }
                        else // Dir
                        {
                            ShareDirectoryClient shareDirClient = baseDirClient.GetSubdirectoryClient(file.Name);
                            WriteObject(new AzureStorageFileDirectory(shareDirClient, (AzureStorageContext)this.Context, file, ClientOptions));
                        }
                    }
                }
            }
            else
            {
                if (ExcludeExtendedInfo.IsPresent)
                {
                    WriteWarning("'-ExcludeExtendedInfo' will be omit, it only works when list file and directory without '-Path'.");
                }
                bool foundAFolder = true;
                ShareDirectoryClient     targetDir     = baseDirClient.GetSubdirectoryClient(this.Path);
                ShareDirectoryProperties dirProperties = null;

                try
                {
                    dirProperties = targetDir.GetProperties(this.CmdletCancellationToken).Value;
                }
                catch (global::Azure.RequestFailedException e) when(e.Status == 404)
                {
                    foundAFolder = false;
                }

                if (foundAFolder)
                {
                    WriteObject(new AzureStorageFileDirectory(targetDir, (AzureStorageContext)this.Context, dirProperties));
                    return;
                }

                ShareFileClient     targetFile     = baseDirClient.GetFileClient(this.Path);
                ShareFileProperties fileProperties = targetFile.GetProperties(this.CmdletCancellationToken).Value;

                WriteObject(new AzureStorageFile(targetFile, (AzureStorageContext)this.Context, fileProperties, ClientOptions));
            }
        }