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"
嗨,我正在尝试获取 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"