簡體   English   中英

PowerShell:目錄檢索和語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM