visual tiempo studio net generar ejecucion documentar documentacion desde crear codigo clases c# powershell sharepoint-2010 content-type document-library

tiempo - generar documentacion c#



¿Es fácil convertir(alrededor de 15 líneas de código) el código c#a Powershell? (1)

Encontré este código en línea y me pregunto si es fácil convertirlo a Powershell. Estoy recibiendo este error

Missing expression after '',''. At C:/AddaItem.ps1:60 char:73 + $newFile = $docLibrary.RootFolder.Files.Add($newDestinationFolderPath, <<<< UTF8Encoding.UTF8.GetBytes(builder.ToString()), $true) + CategoryInfo : ParserError: (,:String) [], ParseException + FullyQualifiedErrorId : MissingExpressionAfterToken

Parece estar quejándose de esta línea:

$newFile = $docLibrary.RootFolder.Files.Add($newDestinationFolderPath,UTF8Encoding.UTF8.GetBytes(build er.ToString()), $true)

Aquí está el código completo:

if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell } $SiteUrl = "http://portal.memorial.hermann/patient" $web = Get-SPWeb $SiteUrl $Library = "Unpaid Billing Records" $docLibrary = $web.Lists[$Library] $rootFolder = $docLibrary.RootFolder $csvFile = "C://PowerShell/insurancefile.csv" # $fileURL foreach($i in Import-CSV $csvFile) { $sourceFile = Get-ChildItem $i.DocLink $destinationFolderPath = $rootFolder.Url if($i.DestinationFolder -ne ""){ $destinationFolderPath += "/" + $i.DestinationFolder.replace("/","/") $folders = $i.DestinationFolder.Split("/") $subFolder = $rootFolder foreach($f in $folders) { $testFolder = $subFolder.SubFolders[$f]; if($testFolder -eq $null) { $subFolder = $subFolder.SubFolders.Add($f) "created new folder " + $f } else { $subFolder = $testFolder } } } $destinationFolderPath += "/" + $sourceFile.Name "copying " + $destinationFolderPath if($i.ContentType = "MasterDocument") { $itemType = $docLibrary.ContentTypes[$i.ContentType] $newFile = $docLibrary.RootFolder.Files.Add($destinationFolderPath,$sourceFile.OpenRead(), $true) $theItem = $newFile.Item $theItem["ContentTypeId"] = $itemType.Id # $fileURL = $theItem.Url } elseif($i.ContentType = "Link2Document") { $itemType = $docLibrary.ContentTypes[$i.ContentType] $newDestinationFolderPath = "/" + $i.fileNameASPX $newFile = $docLibrary.RootFolder.Files.Add($newDestinationFolderPath,UTF8Encoding.UTF8.GetBytes(builder.ToString()), $true) $theItem = $newFile.Item $theItem["ContentTypeId"] = $itemType.Id $itemUrl = New-object Microsoft.SharePoint.SPFieldUrlValue $itemUrl.Url = $i.fileLinkUrl $itemUrl.Descrition = $i.URLDESC $theItem["URL"] = $itemUrl } # UPDATING METADATA # $theItem["Name"] = $i.newfilename #Rename file name $theItem["Status"] = $i.Status $theItem["Title"] = $i.Title $theItem["Grantor"] = $i.Grantor $theItem.Update() } $web.Dispose()

Como referencia, aquí está el código de C # que estoy tratando de convertir:

using ( SPSite siteCollection = new SPSite( "http://moss.litwareinc.com" ) ) { using ( SPWeb web = siteCollection.OpenWeb( "docs" ) ) { SPList list = web.Lists["Sample"]; //link to the file string fileLinkUrl = "http://moss.litwareinc.com/docs/Shared%20Documents/ConfigureIRMinWSS30.doc"; StringBuilder builder = new StringBuilder(); using ( TextReader reader = new StreamReader( @"C:/linktodocumenttemplate.txt" ) ) { builder.Append( reader.ReadToEnd() ); } //replace string template with values builder.Replace( "{0}", fileLinkUrl ); //should change the name of the .aspx file per item SPFile file = list.RootFolder.Files.Add( "link_title.aspx", UTF8Encoding.UTF8.GetBytes(builder.ToString())); //set list item properties SPListItem item = file.Item; item["Content Type"] = "Link to a Document"; SPFieldUrlValue itemUrl = new SPFieldUrlValue(); itemUrl.Description = "From sample code"; itemUrl.Url = fileLinkUrl; item["URL"] = itemUrl; //persist changes item.Update(); } }


Esto debería corregir el error que está recibiendo:

$content = get-content "C:/linktodocumenttemplate.txt" $utf = new-object System.Text.UTF8Encoding $newFile = $docLibrary.RootFolder.Files.Add($newDestinationFolderPath, $utf.GetBytes($content.ToString()), $true)