[英]PowerShell: Directory Retrieval and syntax error
一點背景...
我經常使用Windows XP,Vista和7。 因此,我必須不斷將程序設置從每台PC上的%appdata%
文件夾移至下一台。 我認為制作PowerShell腳本來為我執行此操作並在完成后刪除文件夾將減輕我的麻煩。 因為我通常在閃存驅動器上工作,所以我希望使用相對路徑,但這似乎給我帶來了麻煩,但是最大的問題是我似乎對Powershell的了解不足,無法知道什么錯誤我正在制作以及如何修復它...所以我來了。
我認為我可以將任務分成兩個腳本。 一個用於放置目錄,第二個用於將目錄復制回原始文件夾並刪除后面的任何痕跡。 我會告訴你你想要我到目前為止。 我認為檢索它們可能會比較困難,所以我從那里開始。 到目前為止,這就是我所擁有的。 我使用的是txt文件,可以輕松地更新我想要或需要轉移的文件夾列表,因此它也被變量作為目標。
$fldrtxt = Get-Content .\FolderList.txt
$dirget = -LiteralPath ="'%appdata%'\$_fldertxt"
$dirpost = "./Current"
# get-command | Add-Content .\"$today"_CommandList.txt
Set-Location c: {get-content $_dirget} | %{ copy-item $_dirpost}
我無法讓PowerShell識別使用run實用程序時使用的同一命令。 既然可以確定我可以使用%appdata%
來引用我要從中取出文件夾的位置,那么如何編寫此腳本才能完成我想要的工作? 我可以使用絕對路徑,因為我必須為所有三台計算機使用單獨的腳本。 而且我不想。
如何使用PowerShell執行我想要的操作並定位需要使用的文件夾?
第一:破壞環境
因為我確定我可以使用%appdata%來引用我希望文件夾從何處獲取
PowerShell的語法錯誤,環境變量的%var%
語法特定於cmd腳本(並從MS-DOS批處理文件繼承而來)。
在PowerShell中,訪問環境變量的名稱以env:
前綴,因此$env:AppData
。
$_dirget = "$env:AppData\$_fldertxt"
第二:傳遞參數
不要在變量中包含參數名稱,傳遞給cmdlet的變量將作為參數而不是參數名稱傳遞。 你需要:
get-content -LiteralPath $_dirget
(有一個叫“ splat”的東西,它允許您將參數名稱-參數對的哈希表用作哈希表,但這在這里是不必要的。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.