powershell 获取内容 - Autodesk Navisworks

powershell get Content - Autodesk Navisworks

嗨,我正在尝试获取 Autodesk Navisworks (NWD) 文件的内容。

这是我尝试做的事情的简单版本 -

$fileCont = Get-Content -Path $filePath
New-Item C:\Temp\tom2.nwd
Set-Content C:\Temp\tom2.nwd $fileCont

为此证明我可以成功采集到navisworks文件的内容..

虽然这是一个简单的工作流程,但我想要实现的目标更大,谢谢,如果我能弄清楚这一点,我就知​​道剩下的了..

这是我尝试打开时的错误 C:\Temp\tom2.nwd

默认情况下,Get-Content and Set-Content 都只在 text 上运行。

处理原始 byte 数据 - 需要处理 binary[=33= 的内容] 文件格式如 .nwd - 你需要使用:

  • Windows PowerShell 中:-Encoding Byte
  • PowerShell [核心] v6+ 中:-AsByteStream

注意:如果所有字节一次都适合内存,您可以通过添加 -Raw.

大大加快 Get-Content 调用

你说得对,这个方法确实有效,但速度极慢且无法使用,但我现在可以通过关注 this post

来确认这一点

我使用以下方法收集并post文件中的数据。

  write-host "Creting object in bucket.."

$B_Key = ''
write-host "Bucket Key ="$B_Key

write-host "File Content being uploaded to bucket object"

$currentDir = Get-Location
$sourceFile = [System.IO.Path]::Combine($currentDir, 'rac_basic_sample_project_pstest.rvt')
$fileName = [System.IO.Path]::GetFileName($SourceFile)
Set-ItemProperty -Path $sourceFile -Name IsReadOnly -Value $false

$Clen = Get-Item $sourceFile
$Clen = $Clen.Length
write-host $Clen

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
            $headers.Add("Authorization", "Bearer $token")
            $headers.Add("Content-Type", "application/octet-stream")
            $headers.Add("Content-Length", $CLen)

$CreateObj = 'https://developer.api.autodesk.com/oss/v2/buckets/'+$B_Key+'/objects/'+$fileName 
$CreateObjAPIresult = Invoke-RestMethod -Uri $CreateObj -Method Put   -Headers $headers -InFile $sourceFile

write-host "New Object Created in bucket"