我需要從PowerShell連接到Linux機器,獲取一些與名稱匹配的文件夾,然後刪除它們(如果您問爲什麼,請爲測試環境進行清理)。在PowerShell腳本中跳出bash代碼序列
要做到這一點,我使用SSH.NET庫(詳情here)和我的劇本是這樣的,到目前爲止:直到我到達的地步,我需要循環
New-SshSession -ComputerName UbuntuMachine -Username root -Password test1234
Invoke-SshCommand -InvokeOnAll -Command {\
cd /dev;\
shopt -s nullglob;\
backupsToDelete=(Nostalgia*);\
printf "%s\n" "${backupsToDelete[@]}";\
for i in "${backupsToDelete[@]}"\
do\
printf $i\
done}
一切正常通過我的backupsToDelete
數組。看來,出於某種原因,PowerShell是治療for
循環,因爲它是自己的說法,而不是一個bash的一個,從而導致錯誤的一切:
At C:\Users\Administrator\Desktop\CleanupLinux.ps1:7 char:6
+ for i in "${backupsToDelete[@]}"\
+ ~
Missing opening '(' after keyword 'for'.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword
有沒有辦法告訴PowerShell將不執行這些類型的語句因爲它是自己的?或者,也許是另一種方法?
'-Command'想'串'而不是'ScriptBlock'。是的,'ScriptBlock'可以自動轉換爲'string',但首先必須使用PowerShell語法規則進行分析。 – PetSerAl