protected override void ExecuteCmdlet() { if (ParameterSetName == ParameterSet_ASFILE) { if (!System.IO.Path.IsPathRooted(Path)) { Path = System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, Path); } if (string.IsNullOrEmpty(NewFileName)) { FileName = System.IO.Path.GetFileName(Path); } else { FileName = NewFileName; } } var folder = EnsureFolder(); var fileUrl = UrlUtility.Combine(folder.ServerRelativeUrl, FileName); string targetContentTypeId = null; // Check to see if the Content Type exists. If it doesn't we are going to throw an exception and block this transaction right here. if (ContentType != null) { CurrentWeb.EnsureProperty(w => w.ServerRelativeUrl); var list = CurrentWeb.GetListByUrl(folder.ServerRelativeUrl.Substring(CurrentWeb.ServerRelativeUrl.TrimEnd('/').Length + 1)); if (list is null) { throw new PSArgumentException("The folder specified does not have a corresponding list", nameof(Folder)); } targetContentTypeId = ContentType?.GetIdOrThrow(nameof(ContentType), list); } // Check if the file exists if (Checkout) { try { var existingFile = CurrentWeb.GetFileByServerRelativePath(ResourcePath.FromDecodedUrl(fileUrl)); existingFile.EnsureProperty(f => f.Exists); if (existingFile.Exists) { CurrentWeb.CheckOutFile(fileUrl); } } catch { // Swallow exception, file does not exist } } Microsoft.SharePoint.Client.File file; if (ParameterSetName == ParameterSet_ASFILE) { file = folder.UploadFile(FileName, Path, true); } else { file = folder.UploadFile(FileName, Stream, true); } bool updateRequired = false; var item = file.ListItemAllFields; if (Values != null) { ListItemHelper.SetFieldValues(item, Values, this); updateRequired = true; } if (ContentType != null) { item["ContentTypeId"] = targetContentTypeId; updateRequired = true; } if (updateRequired) { item.SystemUpdate(); } if (Checkout) { CurrentWeb.CheckInFile(fileUrl, CheckinType.MajorCheckIn, CheckInComment); } if (Publish) { CurrentWeb.PublishFile(fileUrl, PublishComment); } if (Approve) { CurrentWeb.ApproveFile(fileUrl, ApproveComment); } ClientContext.Load(file); ClientContext.ExecuteQueryRetry(); WriteObject(file); }
protected override void ExecuteCmdlet() { CurrentWeb.CheckOutFile(Url); }