编辑:我现在用"env:username;以校正第一部分。有人知道如何在运行代码之前添加提示以允许用户什么都不键入吗;A"B"C";替换第一行代码中的(版本(?
我在Powershell中完成了一段代码,将文件从一个目的地复制到另一个。我希望在运行脚本时,用户可以输入他们的别名,它将替换";别名";在脚本中第二件事是用户输入";A"B"C";或者什么也不代替";(版本(";在脚本中
#Create New Folders
new-item -path "C:Users$env:usernameArchive" -name "TeamsCopy$((get-date).tostring("MMdd"))(version)" -itemtype "directory"
new-item -path "C:Users$env:usernameArchiveTeamsCopy$((get-date).tostring("MMdd"))Canada" -itemtype "directory"
#Copy Files
Copy-item -path "C:Users$env:usernameSourceFolderCanada.xlsx" -destination "C:UsersaliasArchiveTeamsCopy$((get-date).tostring("MMdd"))Canada"
有人知道如何将其添加为提示,然后使用正确的语法吗?
最简单的方法是Read-Host
$version = Read-Host "Enter the version (A, B, C or none)"
但这会带来用户输入无效的风险。或者,您可以从固定列表中提示选择:
$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)