如何在 Powershell 中添加参数以更改文件目标和版本号

How can I add parameters in Powershell to change file destination and version number

编辑:我现在将用户替换为“$env:username”以更正第一部分。有谁知道如何知道在 运行 代码之前添加提示以允许用户不键入任何内容,“A”、“B”、“C”来替换第一行代码中的(版本)?

我在 Powershell 中完成了一段代码,用于将文件从一个目的地复制到另一个目的地。我希望在 运行 脚本时做到这一点,用户可以输入他们的别名,它将替换脚本中的“别名”。 第二件事是用户输入“A”“B”“C”或什么都不输入,以替换脚本中的“(版本)”。

#Create New Folders 

new-item -path "C:\Users$env:username\Archive" -name "TeamsCopy$((get-date).tostring("MMdd"))(version)" -itemtype "directory"

new-item -path "C:\Users$env:username\Archive\TeamsCopy$((get-date).tostring("MMdd"))\Canada" -itemtype "directory"
 
 
#Copy Files 

Copy-item -path "C:\Users$env:username\SourceFolder\Canada.xlsx" -destination "C:\Users\alias\Archive\TeamsCopy$((get-date).tostring("MMdd"))\Canada"

有没有人知道如何将其添加为提示以及正确的语法来使用?

最简单的方法是Read-Host

$version = Read-Host "Enter the version (A, B, C or none)"

但这要承担用户输入无效的风险。或者,您可以从固定列表中选择 prompt for a choice

$title = $null
$prompt = "Choose the version:"
$choices = [System.Management.Automation.Host.ChoiceDescription[]] @("&A", "&B", "&C", "&None")
$default = 3
$choice = $Host.UI.PromptForChoice($title, $prompt, $choices, $default)
$version = ("A","B","C","")[$choice]

然后在您的 New-Item 命令中:

-Name "TeamsCopy$((Get-Date).ToString("MMdd"))($version)"
# or
-Name ("TeamsCopy{0:MMdd}({1})" -f (Get-Date), $version)