所以,我在 PowerShell 中,我可以運行一個命令,如...
& .\curl.exe -vk -u <username:password> -F <some data> -F <some more data> --url <url here>
一切正常,但有時要添加更多資料條目,因此要添加更多“-F”。喜歡...
& .\curl.exe -vk -u <username:password> -F <some data> -F <some more data> -F <more data> -F <and another one> --url <url here>
我已經嘗試創建 foreach 回圈并構建一個長的 ScriptBlock 但如果我使用創建的字串和呼叫命令,它似乎并不喜歡。像這樣...
$Data = @()
$Data = "some data"
$Data = "more data"
$Data = "even more data"
$Script = @()
$Script = "& .\curl.exe -vk -u <username:password>"
foreach ($D in $Data) {
$Script = "-F $D"
}
$Script = "--url <url here>"
$FinalScript = $Script -join ' '
Invoke-Command -ScriptBlock {$FinalScript}
歡迎任何幫助。抱歉,如果這不是正確的格式... Newb!哦,這是在 PowerShell 5.1 上……因為 Windows!
uj5u.com熱心網友回復:
一種選擇是構造-F <string>要傳遞給 curl的序列陣列,然后使用@splatting 運算子:
# define the data contents
$data = @(
"some data"
"more data"
"additional data"
)
# prepend each data item with `-F`, store the resulting sequence in a new array
$Fparams = $data |ForEach-Object { '-F', $_ }
# invoke application and pass -F params with the @ splatting operator
& .\curl.exe -vk -u <username:password> @Fparams
uj5u.com熱心網友回復:
值"some data","more data"等包含空格,所以你需要使用它們周圍的引號。
現在,您的代碼輸出:
& .\curl.exe -vk -u <username:password> -F some data -F more data -F even more data --url <url here>
嘗試
$Data = "some data", "more data", "even more data"
$Script = "& .\curl.exe -vk -u <username:password> @@F@@ --url <url here>"
$fSwitches = $(foreach ($D in $Data) { '-F "{0}"' -f $D }) -join ' '
$FinalScript = $Script -replace '@@F@@', $fSwitches
$FinalScript 現在將包含
& .\curl.exe -vk -u <username:password> -F "some data" -F "more data" -F "even more data" --url <url here>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/345257.html
