2013-07-08 5 views
1

나는 bash와 bourne을 사용하여 스크립트를 작성한 유닉스 배경에서 왔습니다. 그러나 PowerShell을 사용하여 스크립트를 작성해야하며 정보를 찾는 데 어려움을 겪고 있습니다.PowerShell에서 정보를 찾는 방법은 무엇입니까?

예를 들어, * nix에서 man bash을 수행하고 bash 사용법을 모두 읽고 특정 명령에 대해 읽으려면 man some_command을 수행 할 수 있습니다. 지금까지, 내가 사용할 수있는 모든 명령을 보려면 get-command과 같은 몇 가지 powershell 등가물을 찾았지만 객체를 가져오고 사용하면 정말 혼란 스럽습니다.

예를 들어 powershell을 사용하여 새 예약 된 작업을 만들려고하고 있으므로 여기에 샘플 코드가 있습니다.

$schedule = new-object -com Schedule.Service 
$schedule.connect() 
$tasks = $schedule.getfolder("\").gettasks(0) 

$tasks | select Name, LastRunTime 

foreach ($t in $tasks) { 
    foreach ($a in $t.Actions) { 
    $a.Path 
    } 
} 

나는이 스크립트가 무엇을하는지 이해하지만 경험없이 어떻게 다음을 수행 알게 될 것입니다 :

  • new-object -com Schedule.Service
  • 이 객체가 가지고있는 알고 사용하는 알고 여기 SNIPPIT이다 .connect 방법
  • 이 목적은 .getfolder.gettasks 개체가 알고
,

많은 코드가 나에게 모호한 것처럼 보이므로 위의 정보를 어디에서 powershell을 사용하여 찾을 수 있습니까?

+0

경험이나 다른 사람에게 묻는'Schedule.Service'에 대해서 알고있을 것입니다.'crontab '이 유닉스에서 그것을 할 수있는 방법이었던 것과 같은 방식입니다. 나는'$ schedule.'을 타이핑하고 Tab 키를 눌러서 완성 방법이 무엇인지 알게되면 그 방법에 대해 배웠다. – Gabe

답변

2

at this one 그래서 당신이 Get-Command을 발견 가리 킵니다. 시작하기에 적합한 cmdlet이 표시됩니다. 스냅인/모듈을 가져온 후에는 더 많은 기능을 사용할 수 있습니다. Get-PSSnapin -RegisteredGet-Module -ListAvailable을 사용하면 더 많은 cmdlet을 제공하기 위해 가져올 수있는 추가 모듈을 볼 수 있습니다.

PowerShell의 좋은 점은 별칭 시스템에 구축 된 제작자가 있다는 것입니다. 그 중 하나는 bash/DOS 배경을 가지고있을 때 PowerShell을 쉽게 배울 수 있도록하는 것이 었습니다. 예를 들어 man Get-Process을 입력하면 Get-Process cmdlet에 대한 설명서가 제공됩니다. 그것에 대한 모든 문서를 보려면 man Get-Process -Full을 사용하십시오. man이 실제로 존재하지 않으면 UNIX/Linux에서 man과 동일한 기능을 가진 Get-Help의 별명입니다. Get-Alias cmdlet을 사용하여 등록 된 별칭 '및 해당 정의를 표시 할 수 있습니다.

찾은 스크립트는 COM 개체로 작업하고 있습니다. New-Object (실제로는 -ComObject의 약자)에 사용 된 -com 매개 변수 때문에 알 수 있습니다. .NET 개체와 달리 COM 개체는 PowerShell에 기본 제공되지 않지만 PowerShell은 VBScript에서 지원하는 것과 동일한 방식으로 개체를 지원합니다. Get-Member cmdlet은 .NET 및 COM 형식 개체 멤버 (속성 및 메서드)를 모두 공개합니다. 아래 Get-Member에 대해 자세히 알아보십시오.

New-Object cmdlet을 사용하면 Schedule.Service이라는 COM 개체의 인스턴스를 만들 수 있습니다. 이 개체에 대해 더 많은 정보를 찾는 두 가지 주요 방법이 있습니다.첫 번째는 Get-Member cmdlet을 사용하여 PowerShell에서 직접 속성과 메서드를 나열 할 수 있다는 것입니다. 이 cmdlet은 .NET 및 COM 개체 모두에서 작동합니다. 개체로 수행 할 수있는 작업을 보여주는 귀중한 cmdlet입니다. 그것에 대해 알아 보려면 man 또는 Get-HelpGet-Member을 사용하십시오. 실제로 Get-Member을 사용하여 질문하신 객체 구성원을 발견 할 수 있습니다 (예 : .connect). 두 번째 방법은 Microsoft의 개발자 설명서 웹 사이트 인 MSDN에서 개체에 대한 설명서를 찾는 것입니다. This은 아마도 해당 개체에 가장 적합한 페이지 일 것입니다.

2

내가 PowerShell을 스크립트에 익숙하지 오전하지만이 발견, 어쩌면 일부 참조 사용하기 :

PowerShell을 스크립팅 있습니다 찾아야 할 웹 캐스트 등. Windows PowerShell을 시작하기에 http://msdn.microsoft.com/en-us/library/windows/desktop/jj150476%28v=vs.85%29.aspx

가이드 : 다음 Windows PowerShell을 API를

작업 스케줄링 도움말 항목을 다음 http://technet.microsoft.com/library/ee221100.aspx의 Windows PowerShell에 대한

:
얻을-명령을 :에서 cmdlet에 대한 정보를 가져옵니다 cmdlet 코드
get-member : 개체의 속성 및 메서드를 가져옵니다.
where-object : 개체 속성을 필터링합니다.
about_object : Windows PowerShell에서 개체 사용에 대해 설명합니다.
about_remote : 원격 컴퓨터에서 명령을 실행하는 방법을 알려줍니다.

개념 도움말 파일의 이름은 다음과 같이 "about_"입니다.
about_regular_expression.

help 명령도 cmdlet의 별칭을 표시합니다. 이러한 은 대개 입력하기가 쉬운 대체 이름 또는 닉네임입니다. 예를 들어 Invoke-Command cmdlet의 별칭은 "remote"입니다.희망이 조금 도움이 될 것입니다

GET-별칭

:

는 별칭 유형을 얻으려면.

1

"powershell create scheduled task"에 대한 Google의 첫 번째 조회는 here이며, 답변 중 하나는 Schedule.Service COM 개체를 나타냅니다. That object's documentation은 개체의 모든 메서드와 속성 목록을 제공합니다.

get-member을 사용하여 세션의 변수 또는 개체의 모든 속성 & 속성을 검색 할 수도 있습니다.

$schedule = new-object -com Schedule.Service 


    TypeName: System.__ComObject#{2faba4c7-4da9-4013-9697-20cc3fd40f85} 

Name   MemberType Definition 
----   ---------- ---------- 
Connect   Method  void Connect (Variant, Variant, Variant, Variant) 
GetFolder  Method  ITaskFolder GetFolder (string) 
GetRunningTasks Method  IRunningTaskCollection GetRunningTasks (int) 
NewTask   Method  ITaskDefinition NewTask (uint) 
Connected  Property bool Connected() {get} 
ConnectedDomain Property string ConnectedDomain() {get} 
ConnectedUser Property string ConnectedUser() {get} 
HighestVersion Property uint HighestVersion() {get} 
TargetServer Property string TargetServer() {get} 

Component Object Model 윈도우의 핵심 부분이며, COM 아닌 수천 OS 및 설치된 다른 소프트웨어 모두와 상호 작용에 대한 기본 Windows 설치에서 사용할 개체를 경우 수백이 있습니다 (소프트웨어는 물체의 자신의 세트를 설치할 수 있습니다 잘). 이 중 많은 부분을 이제 .NET Framework 어셈블리 및 PowerShell 모듈, 스냅인 및 cmdlet로 대체 할 수 있습니다.

COM 개체를 어떻게 발견합니까? 일반적으로 구글을 통해 - 당신이하려는 일에 대한 검색을 실행하고, 일반적으로 당신은 누군가가 이미 비슷한 것을 게시했거나, 검색을 통해 객체의 자신의 문서에있는 단어를 온라인 상에 표시합니다.

PowerShell 3을 사용하는 경우 Schedule.Service을 전혀 사용할 필요가 없습니다. 예약 된 작업을 처리 할 수있는 cmdlet 집합이 있습니다. 시동기는 New-ScheduledTask을 참조하십시오.

당신이 일반적인 PowerShell을 튜토리얼을 찾고 있다면, 나는 보통 사람들이

+0

감사합니다. 훌륭한 정보입니다! –

1

Get-Command *foo*은 foo라는 단어가 포함 된 모든 cmdlet을 나열하고 Get-Help New-Object은 New-Object cmdlet의 도움말 파일을 표시합니다.

그러나 Powershell보다 훨씬 앞선 COM 개체를 사용하면 바로 사용할 수 있습니다. COM 프로그래밍은 오래되었고 상당히 오래된 것일 수 있습니다. Powershell을 사용하면 COM과 인터페이스 할 수 있지만 실제로는 "Powershell 방식"이 아닙니다.

는 파워 쉘 3, 나는 Register-ScheduledJob을 찾을 수 있었다 :

The Register-ScheduledJob cmdlet creates scheduled jobs on the local computer.

내가 그것을 가능성이 더 쉽고 Powershelley 그냥 때문에, 즉 COM 인터페이스를 사용하여 이상 선호하는 방법입니다 말을 가능하면.

+0

흥미 롭습니다. 그래서 가능한 경우'COM' 개체를 사용하지 말고 powershell cmdlet을 사용하고 싶습니다. –

+0

@nkon 먼저 수행 할 작업을 수행하는 cmdlet을 찾습니다. PowerShell은 여전히 ​​비교적 새롭고 (bash 표준에 따라), 수행하려는 모든 작업에 대한 cmdlet을 아직 가지고 있지 않으므로 .NET 또는 COM 개체를 직접 사용해야 할 수도 있습니다. 그런데 많은 cmdlet이 이러한 개체를 배경으로 사용하지만 개체를 ​​직접 사용하는 대신 호출 할 수있는 멋진 cmdlet을 제공합니다. –

관련 문제