2017-04-07 18 views
0

ファイルの一覧を含む "D:\ PROD \ transfert"というフォルダがあります。Powershellでファイルを一覧表示し、ユーザーに選択させる

ファイルを一覧表示してユーザーに選択させるPowershellスクリプトを作成すると、スクリプトは選択したファイルに対して操作を実行します。理想的には、選択したファイルのパスを変数に保存する必要があります。ここで

は、出力が欲しかったです:

>Select a file : 
[1] file1.zip 
[2] file2.zip 
[3] file3.zip 
> 

私が今できるすべてが前にいない数のファイルを一覧表示されます。

Get-ChildItem C:\PROD\transfert | % { $_.FullName } 

ありがとう!

答えて

5

どうしてもコンソールのGUIを必要としない限り、あなたは、このように、ユーザーが選択できるようにOut-GridViewを使用することができますできます

Get-ChildItem C:\PROD\transfert | Out-GridView -Title 'Choose a file' -PassThru | ForEach-Object { $_.FullName } 

EDIT ...と、変数に格納します。 ..

$filenames = @(Get-ChildItem C:\PROD\transfert | Out-GridView -Title 'Choose a file' -PassThru) 

@()ラッパーは、(1つのファイル、または全くファイルが選択されている場合でも)ファイル名の配列が常に返されることを保証します。 2

PassthruあなたがPowerShellの3以上を有するに依存して)

EDITは、以下の選択メニューは、コンソールまたはGUIのかに応じて、表示タイプを変化させます(例えば、ISE)。私はWinRMでテストしていませんが、通常のPowerShellコンソールから呼び出された場合はGUIを生成しません。

$files = Get-ChildItem -Path C:\PROD\transfert -File 
$fileChoices = @() 

for ($i=0; $i -lt $files.Count; $i++) { 
    $fileChoices += [System.Management.Automation.Host.ChoiceDescription]("$($files[$i].Name) &$($i+1)") 
} 

$userChoice = $host.UI.PromptForChoice('Select File', 'Choose a file', $fileChoices, 0) + 1 

# do something more useful here... 
Write-Host "you chose $($files[$userChoice].FullName)" 

ファイルのどのように多くの注意が必要ですがGet-ChildItem

+1

雅によって返され、彼はGUIベースのものをたくない場合は、これは一つの方法です。 :) –

+0

お返事ありがとうございました。私が欲しいものをやっています。ただし、このスクリプトはWinRM上で使用され、Out-GridViewは機能しますか? – kyori

+0

いいえ、@kyori、WinRMでコマンドライン版が必要です。 – TechSpud

関連する問題