Saya hanya perlu memanggil skrip lain dan meneruskan parameter ke sana.

Saya mencoba melakukan panggilan-ekspresi untuk mengaksesnya, saya mencoba menggunakan &, dan tidak ada yang berhasil

Saya mencoba melakukan hal berikut:

 $hostfile = "C:\Users\username\Desktop\csvfile_test.csv"
 $outFile = ".\testerFile.xlsx"
 &  '.\organizer.ps1' "-csvFile $hostfile -outputPath $outFile "

Invoke-Expression 'C:\Users\username\Desktop\organizer.ps1' "$hostfile $outFile"

Saya menerima kesalahan berikut:.

Dengan ampersand (&):

PS C:\Users\username\Desktop> C:\Users\username\Desktop\scanner.ps1
Exception calling "ReadLines" with "1" argument(s): "The given path's format is not supported."
At C:\Users\username\Desktop\scanner.ps1:48 char:1
+ [System.IO.File]::ReadLines("$csvFile") | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : NotSupportedException

Dengan ekspresi panggilan:

Exception calling "ReadLines" with "1" argument(s): "The given path's format is not supported."
At C:\Users\username\Desktop\scanner.ps1:48 char:1
+ [System.IO.File]::ReadLines("$csvFile") | ForEach-Object {
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : NotSupportedException

Invoke-Expression : A positional parameter cannot be found that accepts argument 'C:\Users\username\Desktop\csvfile_test.csv .\testerFile.xlsx'.
At C:\Users\username\Desktop\scanner.ps1:69 char:1
+ Invoke-Expression 'C:\Users\username\Desktop\organizer.ps1' "$host ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
0
riviera990 5 Agustus 2019, 19:49

1 menjawab

Jawaban Terbaik

Saat Anda menulis ini:

& '.\organizer.ps1' "-csvFile $hostfile -outputPath $outFile "

Anda meneruskan satu parameter ke skrip (satu string yang dikutip). Bukan itu yang Anda inginkan.

Inilah yang Anda butuhkan:

$hostfile = "C:\Users\username\Desktop\csvfile_test.csv"
$outFile = ".\testerFile.xlsx"
.\organizer.ps1 -csvFile $hostfile -outputPath $outFile

Pertama, Anda tidak memerlukan operator & (doa) karena nama perintah Anda (skrip organizer.ps1 di lokasi saat ini, dalam contoh ini) tidak mengandung spasi. (Anda dapat menambahkannya jika Anda mau, tetapi itu tidak diperlukan dalam skenario ini.)

Kedua, parameter -csvFile dan -outputPath masing-masing memerlukan string.

2
Bill_Stewart 5 Agustus 2019, 16:54