2016-08-05 5 views
0

잘못된 데이터를 반환합니다.는 - 나는 포스트 "어떻게 제대로 PowerShell의 FolderBrowserDialog를 사용하는"</p> <p>나는 함수에서 반환하는 선택 단지 경로를 받고 문제를 겪고을 보았다

"write-host $ a"대신에 선택한 디렉토리 (C : \ Temp) 대신에 System.Windows.Forms, Version = 4.0.0.0, Culture = 중립, PublicKeyToken은 = b77a5c561934e089의 C : \ 온도

기능은 Get-폴더 ($ initialDirectory)

{ [System.Reflection.Assembly] :: LoadWithPartialName ("System.windows.forms")

$foldername = New-Object System.Windows.Forms.FolderBrowserDialog 
$foldername.rootfolder = "MyComputer" 

if($foldername.ShowDialog() -eq "OK") 
{ 
    $folder += $foldername.SelectedPath 
} 
return $folder 

}

$ A = 가져 오기 - 폴더를 쓰기 호스트 $ 나는이 무효이며, 추가 형을 사용하는 말을 들었다

가. 다음 스크립트로 경로를 얻지 못했습니다.

[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

PowerShell을 함수에서 모든 출력을 반환하므로 결과가 실제로 어셈블리의로드의 출력을 포함하는 배열이며,이 라인은 또한 출력을 생성하기 때문에

Add-Type -AssemblyName System.Windows.Forms 
    $FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog 
    [void]$FolderBrowser.ShowDialog() 
    $FolderBrowser.SelectedPath 
    Write-Host "FolderBrowser= "$FolderBrowser 
+0

아마도'$ folder'가 함수의 범위 밖에 정의되어 있고 함수가이를 수정하고있을 것입니다. PowerShell을 닫고 다시 실행하십시오. 또한,'$ folder + ='를'$ folder ='로 변경하십시오. – TheMadTechnician

+0

감사합니다! 그것 때문에 당신과 Jon – Shannon

답변

2

당신은 그 결과를 얻고있다 폴더 이름 이 같은 어셈블리로드 작업의 앞에

추가 [무효]를 여분의 출력을 생략하고 당신에게 결과를 기대하는 줄 것이다 :

[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

또는 앤서니 스트링거가 코멘트에 언급, 당신은 사용할 수 있습니다 선호하는 방법을 모든 출력을 생성하지 않습니다 아마 될 것이라고 대신 추가 입력 :

Add-Type -AssemblyName System.Windows.Forms 

것은 또한, TheMadTechnician 당신이 $ 폴더 변수에 대한 + = 그냥 = 필요하지 않는 것이 올바른 것입니다.

answer은 PowerShell 함수의 결과를보다 자세히 반환하는 동작을 설명합니다.

+1

의 도움을 받아 일해 왔습니다. (구식) : https://msdn.microsoft.com/en-us/library/12xc5368%28v=vs.110%29.aspx?f=255&MSPPError=- 2147217396 나는 이것을 추천한다 :'Add-Type -AssemblyName System.Windows.Forms' –

+0

이 효과가있다! 고맙습니다! – Shannon

+0

OK, 쓸모없는 것은 내가 원하는 것이 아닙니다. Add-Type을 시도하고 필요한 결과를 얻지 못했습니다. 추가 형 -AssemblyName System.Windows.Forms $ FolderBrowser = 새 객체 System.Windows.Forms.FolderBrowserDialog [무효] $ FolderBrowser.ShowDialog() $ FolderBrowser.SelectedPath 쓰기 호스트 "FolderBrowser ="$ FolderBrowser – Shannon