그래서 PowerShell에서 마침내 두 개의 변수를 읽고, WMI 쿼리를 수행하고, CSV 파일에 세 개의 변수를 쓰는 방법을 알아 냈습니다. 내 보낸 csv 파일을 현재 작업 디렉토리에 생성하고 싶지만 C : \ Windows \ system32에서 찾을 수 있습니다. 나는 이것이 내 코드의 관련 줄이라고 생각합니다. 더 필요한 경우 알려주십시오.
$resultfile = ".\Check-Results.csv"
$csv = "<$server>,<$service>,<$status>`r`n"
<ping check, foreach loop, wmi query here, etc...>
$csv +=$server + "," + $service + "," + $status + "`r`n"
$fso = New-Object -ComObject scripting.filesystemobject
$file = $fso.CreateTextFile($resultfile,$true)
$file.write($csv)
$file.close()
내 이해는 PWD에서 결과 파일을 얻는 데 필요한 모든 것이 점 슬래시라는 것입니다. 덧붙여서, 내 스크립트는 PS 2.0과 호환되어야하므로 Export-CSV -append 만 수행 할 수 없습니다.
alroc의 경우 : 내 스크립트가 수행하는 작업은 Import-CSV를 사용하여 csv 파일에서 서버 이름과 PortWWN을 가져 오는 것입니다. 그런 다음 foreach 루프의 서버 목록을 반복하여 WMI에 PortWWN과 일치하는 Emulex 포트를 쿼리 한 다음 포트 상태 (Link Down, Operational 등)를 추출합니다.
따라서 Import-CSV의 두 변수 인 $ server 및 $ wwn으로 시작하여 $ server, $ wwn 및 $ status의 세 변수로 끝납니다. 세 가지 변수를 새 CSV 파일에 기록해야합니다. PS 2.0에는 Export-CSV가 있지만 -append 매개 변수가없는 것은 3.0 기능입니다. 그래서 내 초기 결과는 루프의 마지막 결과 만 표시했습니다.
Scripting Guy 에서 fsobjects에 대한 아이디어를 얻었고 파일이 내가 예상했던 곳에 있지 않다는 점을 제외하면 결과가 완벽하게 작동하는 것을보고 기뻤습니다. 이 스크립트는 상대적으로 경험이 부족한 PS 사용자가 실행해야하므로 멍청하지 않아야합니다. 그들은 스크립트와 소스 CSV 파일을 PS 2.0이 설치된 컴퓨터에 복사하고 스크립트를 실행 한 다음 결과 파일을 살펴보고 모든 것이 한 곳에 있기를 원합니다.
점 슬래시가 현재 작업 디렉토리에 저장하는 것이 맞습니다. 각 프로세스에는 현재 작업 디렉터리가 있으며 powershell도 다르지 않으므로 "실제"현재 작업 디렉터리를 확인하려면 다음과 같이 할 수 있습니다.
Write-Host ([System.Environment]::CurrentDirectory)
그러나 Powershell은 프롬프트에 표시되는 위치가 현재 공급자 위치라는 점에서 특별합니다. 그래서 다음과 같이 입력하면됩니다.
cd cert:
다음과 같은 메시지가 표시됩니다.
PS Cert:\>
이 "cert : \"드라이브는 "실제"위치가 아니므로 프로세스의 현재 작업 디렉토리로 설정할 수 없습니다. 이것이 powershell이 자신의 (위치)뿐만 아니라 현재 작업 디렉토리를 처리하는 이유입니다.
Cmdlet은 일반적으로 powershell의 위치를 사용하도록 설계되었지만 .NET 클래스를 직접 사용하거나 타사 프로그램을 호출하는 경우 현재 작업 디렉터리는 powershell 프로세스의 디렉터리가됩니다. CSV가 저장되는 위치를 알고 싶다면 스크립트에 다음을 추가하십시오.
Write-Host ([System.Environment]::CurrentDirectory)
또는 현재 powershell 위치가 실제 파일 시스템 위치 인 경우 다음을 사용하여 프로세스의 현재 작업 디렉터리를 powershell의 위치로 설정할 수 있습니다.
[System.Environment]::CurrentDirectory = Get-Location
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다