2015-08-21 23 views
2

所以我试图创建一个简单的程序,将文件从一个位置复制到另一个位置。我只是找到了那部分,但我想要求用户输入一个设置方面的路径,我需要创建一个新的文件夹。如何在powershell中的“New-Item”中输入和使用变量

例如

询问用户输入并将该名称存储在变量中。然后使用路径变量来创建一个名为test的新文件夹

$inputName = Read-Host 'Enter computer name' 
New-Item C:\Users\$inputName\Documents\test -type directory | Out-Null 

因此,如果有,你可以问你将创建一个新的文件,它的用户\文档的计算机上的多个用户。

非常很多仍然学习/教授自己的PowerShell,所以很抱歉,如果这是我完全失踪的东西!谢谢你的帮助!

+0

值得一提的是,您可以在'New-Item'命令中包含两个变量。 – user4317867

回答

1

- 编辑2,添加有关CmdletBinding选项的注释。如果你忽略了参数,PowerShell会提示输入。

Function My-Test{ 
[CmdletBinding(SupportsShouldProcess=$true)] 
Param(
[Parameter(Mandatory=$true)] 
    [string]$Path, 
[Parameter(Mandatory=$true, 
    HelpMessage="Enter ServerName")] 
    [String]$server, 
) 
My-Test -Path C:\Temp -server Server9000 

- 编辑添加PowerShell将在双引号之间展开变量。另一方面,单引号将写出$path

举个例子:

Write-Host 'Your variable is $path` 
Your variable is $path 
Write-Host "Your path is $path" 
Output: Your path is C:\Temp 

您可以使用Read-Host来提示用户已分配给一个变量输入的东西。此外,您可以指定AsSecureString,以便存储的值被加密。

$path = Read-Host -Prompt "Enter path name" 
Write-Host "You chose $path" 

其次,你的脚本可以param($path)开始将接受的路径作为参数CMDLINE。

PS C:\ > Script.ps1 -path "c:\temp" 
+2

另外,如果您使用'[CmdletBinding()]'将您的脚本当作高级函数对待,则可以[使参数为强制性](https://technet.microsoft.com/zh-cn/library/Hh847743.aspx)。这意味着如果它们在被调用的时候没有被提供,PowerShell会为你提示调用者。 – briantist

+1

哦,好点@briantist我会用这个编辑我的答案!你也可以在这里包括'HelpMessage =“输入服务器名称!”'。 – user4317867

+0

工作完美!感谢一堆:) –

相关问题