[英]Run function with Start-process within script
我正在嘗試初始化一堆Powershell窗口,以幫助非常快速地完成掃描。 每個窗口需要不同的輸入,並且我有一個數組變量給出該輸入。 啟動過程函數似乎可以正常工作,但是如果我使用"
,它將給我帶來未知的函數錯誤,並且當我使用'
時,絕對沒有響應
foreach($search in $Partlist){
start-process powershell.exe -argumentlist '-nologo -noprofile -executionpolicy bypass -command .\Get-Data -search $search -department $PNdept -accuracy $accuracy; pause'
start-sleep -s 5
}
我不明白為什么會收到未知的函數錯誤,但我相信我沒有任何反應,因為變量不是全局變量,我已經聲明了全局變量,但仍然沒有運氣。 也許我想念一些東西。 謝謝。
為了增加Ansgar Wiechars的答案,有以下區別:
一篇很棒的文章在這里: https : //learn-powershell.net/2012/05/13/using-background-runspaces-instead-of-psjobs-for-better-performance/但請注意不要太過分: https: //newsqlblog.com/2012/05/22/concurrency-in-powershell-multi-threading-with-runspaces/
為了回答有關“全局”空間的問題,這對於您所在計算機的桌面會話而言不是全局的。 這對於您正在使用的Powershell進程是全局的。示例:使用以下命令創建一個環境變量:
[System.Environment]::SetEnvironmentVariable("MyVar", 22, "User")
您生成一個新的powershell窗口,並使用以下命令進行檢查:
$env:MyVar
您可以這樣刪除它:
Remove-Item env:\myvar
您生成另一個新的Powershell窗口,並且環境變量仍然存在。 進一步的實驗將向您顯示,每個新過程都會產生一個新的全局范圍。
所以! 為什么會出現“未知功能”? 因為您希望環境的某些方面與調用過程相匹配,但是它並不成立。 在這種情況下:
使用運行空間,或參考以下內容: PowerShell使用啟動過程在腳本塊中執行功能會引起奇怪,並帶有雙引號
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.