2016-06-24 27 views
0

PowershellスクリプトからPythonコードを呼び出して、いくつかの引数をループします。 PowerShellのからPythonスクリプトを呼び出すと、まっすぐ進むと、滞りなく動作します:スクリプト私は、引数文字列に変数を挿入するパラメータを変更し、最終的には、Invoke-Commandコマンドで全体を呼び出しています以内に続いてpowershellスクリプトからpythonスクリプトへのコマンドライン引数の受け渡し

PS C:\Windows\system32> C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe C:\Users\Administrator\AppData\Local\Programs\youtube-upload-master\bin\youtube-upload C:\Users\Administrator\Documents\timelapse\videos\timelapse_10.0.0.51-2016-06-21.mp4 --client-secrets=C:\Users\Administrator\Documents\timelapse\credentials\.yt-ul-ioa-secr.json --credentials-file=C:\Users\Administrator\Documents\timelapse\credentials\.yt-ul-ioa-cred.json --title="Timelapse 21.06.2016" --playlist "Timelapses June 2016" 

PS C:\Users\Administrator\Documents\scripts> .\yt-ul.ps1 
Invoke-Command : Parameter set cannot be resolved using the specified named parameters. 
At C:\Users\Administrator\Documents\scripts\yt-ul.ps1:34 char:1 
+ Invoke-Command "$py $arg_list" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Invoke-Command], ParameterBindingException 
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand 

私はSINGLと本当に愚かな何かをやっていると仮定します。

# yt-ul.ps1 
param(
    #[switch]$all_cams = $false, 
    [int]$days = -1, 
    [string]$cam = "ioa" 
) 

$cam_ip_hash = @{ 
    "ioa" = "10.0.0.51"; 
    "pam" = "10.0.0.52"; 
    "biz" = "10.0.0.56"; 
    "prz" = "10.160.58.25"; 
    "igu" = "10.160.38.35"} 


$cam_ip = $cam_ip_hash[$cam] 
$date = (Get-Date).AddDays($days).ToString("yyyy-MM-dd") 

$py = "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\python.exe" 
$yt_ul = "C:\Users\Administrator\AppData\Local\Programs\youtube-upload-master\bin\youtube-upload" 

$title_date = (Get-Date).AddDays($days).ToString("dd.MM.yyyy") 

$us = New-Object System.Globalization.CultureInfo("en-US") 
$playlist_date = (Get-Date).AddDays($days).ToString("Y", $us) 

$vid = "C:\Users\Administrator\Documents\timelapse\videos\timelapse_$cam_ip-$date.mp4" 
$secr = "--client-secrets=C:\Users\Administrator\Documents\timelapse\credentials\.yt-ul-igu-secr.json" 
$cred = "--credentials-file=C:\Users\Administrator\Documents\timelapse\credentials\.yt-ul-igu-cred.json" 
$title = "--title=`"Timelapse $title_date`"" 
$playlist_date = "--playlist `"Timelapses $playlist_date`"" 
$arg_list = "$yt_ul $vid $secr $cred $title $playlist_date" 

Invoke-Command "$py $arg_list" 

しかし、実際には次のようにスクリプトが失敗した呼び出しeと二重引用符がありますが、わかりません。この作品JosefZへ

+0

'&$ PY $ yt_ul $ VID $ SECR $クレド$タイトル$のplaylist_date'またはその代わりに、'起動-Command'の '開始process'? – JosefZ

+0

素晴らしい! '&$ py'はうまくいった!私は期待していた "バックティック"の問題に遭遇しましたが、この呼び出しがうまくいきます: '$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ –

答えて

0

ありがとう:たぶん

& $py $yt_ul $vid $secr $cred --title "Timelapse $title_date" --playlist "Timelapses $playlist_date" 
関連する問題