Throws an error: Missing an argument for parameter 'ItemType'. Specify a parameter of type 'System.String' and try again.
由於Deadly-Bagel's helpful answer指出,你錯過了一個參數-ItemType
,而是遵循它與另一個參數,-Type
,其實是別名對於-ItemType
- 所以remov ing 要麼-ItemType
或-Type
將工作。
要找到一個參數的別名,使用類似(Get-Command New-Item).Parameters['ItemType'].Aliases
Renames my latest folder to _MM-dd-yyyy
, but I want latest_MM-dd-yyyy
.
您可以直接追加日期字符串$localPath
,其中有一個尾隨\
,所以$newPath
看起來像'c:\example\latest\_02-08-2017'
,這不是意圖。
確保$localPath
有沒有尾隨\
解決問題,但千萬注意,Rename-Item
一般只接受一個文件/目錄名爲-NewName
的說法,不是一個完整路徑;你只能逃脫一個完整路徑,如果它的父路徑是相同作爲輸入項目的 - 換句話說,你可以,如果它不會在不同的位置導致重命名的項目只指定路徑(你需要的Move-Item
cmdlet來實現這一點)。
如果我們把它們放在一起:
param (
$localPath = "c:\example\latest\" #"# generally, consider NOT using a trailing \
)
# Rename preexisting directory, if present.
if (Test-Path $localPath) {
# Determine the new name: the name of the input dir followed by "_" and a date string.
# Note the use of a single interpolated string ("...") with 2 embedded subexpressions,
# $(...)
$newName="$(Split-Path -Leaf $localPath)_$((Get-Date).AddDays(-1).ToString('MM-dd-yyyy'))"
Rename-Item -Path $localPath -newName $newName
}
# Recreate the directory ($null = ... suppresses the output).
$null = New-Item -ItemType Directory -Force -Path $localPath
需要注意的是,如果你在當天運行此腳本超過一次多,你會在重命名時遇到錯誤(這很容易處理)。