2015-08-21 53 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

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

相關問題