Sto affrontando un comportamento molto strano con la mia sceneggiatura Powershell. Ricevo valori da un documento pdf tramite Word come ComObject. Ottenere i valori funziona bene e non è un problema, ma non appena provo a concatenare due variabili che ho ottenuto dal documento, dopo averle concatenate manca una di esse. Inizialmente sospettavo fosse un problema con il carattere di sottolineatura, ma dopo aver provato ogni possibile forma di escape, come `_ o $ {variabile} _ e persino averlo sostituito con altri caratteri come uno spazio, ho ancora lo stesso problema .
Posso visualizzare le variabili da solo e restituiscono il valore giusto, ma dopo la concatenazione ottengo un comportamento molto strano.
$filepath = "C:\Users\xxxx\Desktop\all_spools\"
$wd = New-Object -ComObject Word.Application
$wd.Visible = $false
$files = Get-ChildItem -path $filepath
foreach($file in $files) {
$doc = $wd.Documents.Open($file.FullName)
if ($doc.tables(1).rows.count -eq 7) {
$docnum = $doc.tables(1).Columns(2).cells(2).Range.Text
$intdocarr = $doc.tables(1).Columns(2).cells(7).Range.Text
$intdocnum = $intdocarr.split(" ")
$finalintdocnum = $intdocnum | Select-Object -first 1
$doc.Close()
}
else {
$docnum = $doc.tables(1).Columns(2).cells(2).Range.Text
$intdocarr = $doc.tables(1).Columns(2).cells(8).Range.Text
$intdocnum = $intdocarr.split(" ")
$finalintdocnum = $intdocnum | Select-Object -first 1
$doc.Close()
}
$filename = "${docnum}_$finalintdocnum.pdf"
$filename
}
$wd.Quit()
Il mio output previsto sarebbe simile a "90004234_74503423.pdf", ma in realtà ottengo "_74503424.pdf". A volte a caso diventa "_74503423.pdf90004234", che non è riproducibile. Sono un po 'perso.
Quando la variabile $ docnum viene utilizzata per rinominare il file, ricevo un errore con i caratteri illegali nel percorso, ho anche provato a rimuovere tutto e a riproporre solo i numeri.
La mia domanda è: mi sto perdendo qualcosa? Non riesco a capire perché questo non funzionerebbe.
$finalintdocnum = $intdocarr.Split(" ")[0]
ma altrimenti senza i tuoi dati è difficile aiutarti.
$doc.tables(1).Columns(2).cells(2).Range.Text
contiene spazzatura.