PowerShell? 당신은 그것을 사용합니까? 내가 할 수있는 멋진 시스템 관리 작업을 보여줄 수 있습니까? [닫은]


45

PowerShell 이 미래의 길이 라는 것을 어디에서나 계속 읽 습니다. 처음 출시되었을 때 나는 많은 가상 랩을 수행했지만 그 이후로 여전히 프로덕션 환경에서 사용하지 않았습니다. OS가 이미 설치되어있는 OS를 다룰 때 그 날이 올 것임을 알고 있으므로 준비하고 싶습니다.

나는 알고 싶다:

  1. 당신은 그것을 사용합니까?
  2. PowerShell을 사용하기위한 '부트 스트랩'프로세스는 무엇입니까?
  3. 어떤 종류의 시스템 관리 작업을 스크립트로 작성 했습니까?
  4. 저는 SQL Server 데이터베이스 관리자입니다. 그것과 관련된 멋진 것들은 무엇입니까?

모든 사람들이 Microsoft가 이것을 열심히 추진하고 있지만 아무도 실제로 그것을 사용하고 있지 않다는 것에 동의하는 것 같습니다. 매일 작업을 수행하고 일부 코드 샘플을 공유하는 데 사용하는 시스템 관리자의 의견을 듣고 싶습니다.


JScript가 죽었습니까?
Sophie Alpert

7
다음에 오해의 소지가있는 헤드 라인으로 트롤이되지 않도록하십시오.
Jaykul 2016 년

어쩌면 jscript처럼 사라지 기를 바랍니다 . 그냥 나인가요 아니면 아주 못 생기고 장황한가요?
Nick Kavadias

답변:


34

Microsoft는 PowerShell을 어디에서나 고급 사용자 및 자동화 작성자로 선택할 수 있도록 최선을 다하고 있습니다. 똑같은 일을하기 위해 .NET에서 코드를 컴파일하던 시절은 지났지 만 이제 notepad.exe와 google 만 있으면됩니다. 특히 Exchange 2007의 관리 콘솔에는 PowerShell에서 수행 할 수있는 모든 기능이 포함되어 있지 않기 때문에 우리는 사무실에서 열성적인 팬입니다. Microsoft는 의도적으로 한 번만 수행 한 작업을 구현하는 데 실패했으며, 이러한 방식으로 개발하기가 더 쉬워 복잡한 환경과 유사한 것이 있으면 그 사용을 완전히 강제합니다.

Microsoft의 최신 제품 관리 (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008)에는 모두 매우 풍부한 PowerShell 후크가 있습니다. 원격 Powershell (PowerShell 2.0 IIRC)이 Server 2008 R2와 함께 배포되면 자동화 작성자에게 더욱 유용 해집니다.

우리가 한 일 :

  • 헬프 데스크 사용자에게 특정 관리 작업을 위임 할 웹 페이지를 만듭니다. 웹 페이지는 PowerShell에서 실행되는 명령을 시작합니다. 그것이하는 것 :
    • Exchange 2007 사서함 및 홈 디렉터리 프로비저닝을 포함한 사용자 계정 만들기 및 삭제
    • 잠긴 계정을 잠금 해제합니다
    • 그룹 생성 / 삭제
    • 그룹에서 사용자 추가 / 제거
    • 메일 저장소간에 사용자 이동
    • 비밀번호 설정
  • ERP 시스템에서 추출하여 글로벌 주소록 데이터를 매일 밤 Active Directory로 푸시합니다.
  • Exchange 2003에서 Exchange 2007로 마이그레이션 한 레거시 ExchangeDN 문제를 해결하십시오. Exchange 2003에 있던 모든 사람에게 X500 주소를 추가해야했습니다. 상당히 짧은 PowerShell 스크립트로 해결했습니다.
  • "그룹 사서함"(여러 사용자가 사서함에 액세스 할 수있는 Exchange의 공유 사서함)의 스크립트 작성. 시작하기 전에 필요한 데이터의 특성으로 인한 수동 프로세스입니다. 이러한 사서함 설정을 크게 표준화했습니다.
  • 모든 도메인 컴퓨터를 통해 특정 레지스트리 키를 재설정하고 서비스를 다시 시작하는 스크립트를 만들었습니다. 완료하는 데 18 시간이 걸렸지 만 작업이 완료되었습니다.

따라서 PowerShell은 꽤 오랫동안 우리와 함께 할 것입니다.

편집 : 요청 된 코드 샘플 추가

$ list = import-csv ( "groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{편집 됨-, ou = groups, dc = domain, dc = domain, dc = domain}"형식
변수가 분명한 회원 목록
명확하고 가변적 인 알 수없는 사용자
foreach ($ list에 $ entry) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo "새로운 그룹 $ ($ entry.group)에서 넘어져 $ lastseengroup에 변경 사항을 커밋 함"
        $ newgroup = $ ADgroupPrefix + $ lastseengroup
        $ newgroupdn = ' "'+"cn = $ newgroup $ ADGroupSuffix "+ '"'
        echo "$ newgroup에 DN 가져 오기"
        $ existinggroup = dsquery 그룹 domainroot-이름 $ newgroup
        if (($ existinggroup -ne $ null)) {
            dsmod 그룹 $ newgroupdn -chmbr $ memberlist
        } else {
            dsadd 그룹 $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "eDirectory에서 가져온 그룹"
        }
        변수가 분명한 회원 목록
    }
    $ User = get-user $ ($ entry.member) -ErrorAction 자동으로 계속
    if ($ User.isvalid) {
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ memberlist + ' "'+"$ UserDN "+ '"'
    } else {
        $ unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ lastseengroup = $ ($ entry.group)

}
dsadd 그룹 "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix"-scope u -secgrp yes -members $ memberlist

이것은 perl 스크립트로 작성된 CSV 파일을 가져 와서 그룹 세트를 업데이트합니다. 그룹이 이미 존재하면 멤버십을 파일에 지정된 멤버쉽으로 바꿉니다. 그룹이 없으면 그룹을 만듭니다. 이것은 단방향 동기화입니다. 또한,하지 생산에 아직,하지만 가깝습니다.


6
원격 파워 쉘 !! 당신은 ssh를 의미합니다!?! 시간에 대해!
Nick Kavadias

2
웹 사이트에서 powershell 스크립트를 어떻게 실행하고 powershell 스크립트를 웹 프로그래밍 언어로 사용합니까? powershellASP를 사용하고 있습니까? 스크립트를 IIS 사용자로 실행하고 있습니까?
quentin

17

Microsoft의 서버 제품이 처음부터 PowerShell을 사용할 수 있고 (다음 버전의 Exchange는 PowerShell을 통해 모든 구성을 사용할 수 있다고 생각합니다 ) 실제로 PowerShell 과 같은 책은 단조로운 작업을 자동화하는 훌륭한 방법을 설명합니다. PowerShell이 ​​Windows serverland에서 아직 널리 사용되는 기술이라고 제안하는 것이 합리적입니다.


그 책은 아직 베타 / 기록 중입니다
Nick Kavadias

그렇습니다. 그러나 여전히 구매할 수 있으며 내용에 미리 액세스 할 수 있습니다. 그리고 거기에는 수많은 서버 유지 보수가 있습니다. :)
moobaa

4
Exchange는 Exchange 2007부터 모든 PowerShell로 사용되었습니다. OCS는 다음 릴리스에서 완전히 PowerShell을 사용할 수 있습니다. 대부분의 System Center 제품은이 기능을 완전히 지원하거나 다음 릴리스에서 지원합니다. PowerShell은 아무데도 가지 않습니다.
paulr

12

내가 권하고 싶습니다 스콧 Hanselman은의 팟 캐스트 # 162 . 모든 Microsoft 서버 팀은 PowerShell cmdlet을 제공하고 일관된 단일 구문을 따르도록 "강제"된 것 같습니다.

또한 VMWare 와 같은 타사에서 채택하고 있습니다.

요컨대, 2.0으로 시작하는 PowerShell은 가장 사소한 작업을 제외한 모든 배치 파일을 대체하는 사업에 진지하다고 생각합니다.


10

SQL Server 데이터베이스 관리자로 사용하는 10 개의 PowerShell 스크립트 (모두 블로그 에 설명 / 게시 됨 ) :

  1. 모든 SQL Server의 디스크 공간을 확인하고 SQL 테이블에 데이터를로드하십시오.
  2. 모든 프로덕션 SQL Server에서 권한 보고서를 실행하고 SQL 데이터베이스에 데이터를로드
  3. 네트워크의 모든 Windows Server 2003 클러스터, 노드 및 가상을 검색하고 SQL 테이블에로드
  4. SCCM에 정의 된대로 모든 SQL Server에서 모든 데이터베이스를 발견 하고 SQL 테이블에로드
  5. 모든 SQL Server에서 백업 정보를 SQL 테이블로로드하여 SQL Server 백업 스코어 카드 작성
  6. Windows Server 2003 SP2에서 TCP 오프로드 엔진이 비활성화되어 있는지 확인합니다 (많은 SQL Server의 성능 저하 요인)
  7. 디스크 파티션 정렬 확인 (디스크가 잘못 정렬 된 경우 성능 저하)
  8. 한 서버에서 다른 서버로 SQL 테이블 복사
  9. Recursivley 는 MSDB 저장소를 사용하여 폴더 구조를 포함하여 한 서버에서 다른 서버로 모든 SSIS 패키지를 복사합니다.
  10. 나만의 그래픽 객체 의존성 뷰어 만들기

8

어떤 종류의 관리자 작업으로 스크립트를 작성 했습니까?

응용 프로그램 / 서비스 모니터링 : (원격) EventLog 및 저장 프로 시저에서 주요 성능 수치를 가져와 단일 배치 파일에서 표시

저는 SQL Server DBA입니다. 관련 멋진 기능을 보여주세요.

automssqlbackup : 순환 (매일 = 증분, 매주 + 매월 = 전체; 매일 5 개, 매주 5 개 백업 유지), 압축, 이메일 알림을 사용하는 MSSQL의 일일 백업


전체 MSSQL 백업 프로세스를 자동화하려면 +1입니다.
Andrei Rînea

그렇습니다 ... Powershell은 SQL Server에서 복잡한 백업을 자동화하기위한 순수한 금입니다. 시간별 백업을 압축하고 암호화 한 다음 오프 사이트 저장을 위해 파일을 Amazon S3로 보냅니다. codeblog.theg2.net/2010/02/…
Greg Bray

7

이전 경력에서 유닉스 셸 스크립트를 사용한 다음 Windows 서버 관리로 이동 한 후, 저는 정말 정말 강력하다는 것을 말할 수 있습니다. 나는 너무 많은 비전 구문을 배울 시간이나 능력이 없으며 즐겁게 놀랐습니다. powershell 스크립트는 매우 간단한 언어로 작성 될 수 있습니다.

나는 그것이 오랫동안 주변에있을 것이라고 예측한다.


7

SQL Server 2008에는 로컬 파일 시스템이나 레지스트리와 같은 SQL 데이터베이스를 탐색 할 수있는 새로운 PowerShell 확장이 제공됩니다.

SQL Server 클라이언트 도구를 설치 한 후 마우스 오른쪽 단추 클릭 상황에 맞는 메뉴를 통해 PowerShell에서 모든 데이터베이스를 열고 객체 지향 방식으로 데이터베이스를 사용할 수 있습니다.

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir

SCHEMA          NAME         CREATED
------          ----         -------
dbo             MyTable      25/06/2009 17:02

PS > dir | format-table name, columns, rowcount, parent

NAME            COLUMNS      ROWCOUNT      PARENT
----            -------      --------      ------
MyTable         {Id, Name}   0             {ExampleDB}

PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]

PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count

8

PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}

첫 번째 줄은 단순히 프롬프트가 너무 길지 않도록 변경합니다.

바라건대 여기에서 무슨 일이 일어나고 있는지 자명합니다. :)


+1 와우, 이것은 매우 유용합니다. 감사!
jftuga

5

SQL Server 2008에는 이제 Management Studio에 PowerShell 컨텍스트 옵션이 있으므로 Exchange 이외의 옵션도 수용합니다. 또한 이전 버전과의 호환성 문제에 대한 DOS의 보안을 향상시킬 수 없기 때문에 MS가 생각했던 것과 DOS를 대체하는 것으로 생각하십시오. 따라서 그들은 새로운 무언가와 wammo, 문제 해결을 만들었습니다!


4

나도 DBA이고 오랜 시간 스크립터로 DOS 배치 파일 V3.3으로 돌아갑니다! VB Script로 넘어갔지 만 PS는 매우 강력합니다. 살펴보기-죄송합니다. 새로운 사용자이므로 링크를 게시 할 수 없습니다. Otto Helweg의 블로그에서 가져 왔습니다. 싸고 유쾌한 소프트웨어 인벤토리 도구입니다.

  • 1- 데이터베이스 테이블에서 쿼리 할 컴퓨터 목록을 가져옵니다.
  • 2- 현재 데이터와 시간을 결과에 추가
  • 3- 감사 결과를 데이터베이스에 기록

PowerShell 스크립트 예 :

# Open the database connection
$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

# Get all known computers
$sqlQuery.CommandText = "select * from Inventory..Computers"
$reader = $sqlQuery.ExecuteReader()
$computersToQuery = @()
while ($reader.Read()) {
   $computersToQuery += $reader["Computer"]
}

# Close the database connection
$dbConn.Close()

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      "Loading-" + $computer + ":" + $softwareItem

      # Try an Update then an Insert 
      trap {
         $sqlQuery.CommandText = "update Inventory..SoftwareInventory set AuditDate = getdate() where  Computer = '" + $computer + "' and Software = '" + $softwareItem + "'"
         $result = $sqlQuery.ExecuteNonQuery()
         continue
      }

      $sqlQuery.CommandText = "insert into Inventory..SoftwareInventory (Computer,Software,AuditDate) values ('" + $computer + "','" + $softwareItem + "',getdate())"
      $result = $sqlQuery.ExecuteNonQuery()
   }
}

$dbConn.Close()

데이브 J


3

다음 작업은 팀에서 PowerShell을 사용하여 매우 정기적으로 수행합니다.

  • Hyper-V 클러스터의 모든 노드에서 사용 가능한 메모리를 나열하십시오.
  • Netapp 파일러 관리
  • 새로운 Hyper-V 가상 머신 프로비저닝
  • 프로그래밍 방식으로 SharePoint 목록에 쓰고 읽음

매일, 나는 항상 PS 프롬프트를 표시하고 CMD를 사용하는 데 사용한 일회성 작업에 사용합니다.

다음은 Sharepoint List를 읽는 몇 가지 코드 샘플입니다. Sharepoint의 웹 서비스와 PowerShell V2.0의 새로운 "New-WebServiceProxy"cmdlet을 사용합니다.

$url = "http://server/sites/site/_vti_bin/lists.asmx"
$listWebService = new-webServiceProxy -uri $url -UseDefaultCredential
$listName = "MyList"
$viewGuid = $null
$query= $null
$viewFields = $null
$numRowsReturned = 20000
$queryOptions = $null
$result = $listWebService.GetListItems($listName,$ViewGuid,$query,$viewFields,$numRowsReturned,$queryOptions,$null)

Oisin Grehan은 모든 기능을 만드는 데 기본 으로 사용한 Sharepoint Web Services 사용에 대한 훌륭한 블로그 게시물을 보유하고 있습니다. 그는 심지어 PowerShell V1을 사용하는 경우 사용할 수있는 굉장한 new-webservice.ps1 스크립트를 가지고 있습니다.

또한 클러스터의 노드에서 사용 가능한 메모리를 얻는 데 사용한 기본 기능은 다음과 같습니다.

Function Get-AvailableMemory {
param
(
[string[]]
$servers
)
BEGIN {
$query = "select AvailableBytes,__SERVER from Win32_PerfRawData_PerfOS_Memory"

$availableMemory = @{
                    Name="AvailableMemory";
                    Expression = {[math]::round($_.AvailableBytes/1gb,2)}
                    }
$serverName = @{  
                Name ="Server";
                Expression = {$_."__SERVER"}                                      
               }
}
PROCESS {
foreach ($server in $servers){
    get-wmiobject -query $query -computer $server |
    select-object $availableMemory, $serverName
    }
}

END {}    

}

공유하고자하는 샘플 코드가 있습니까? SharePoint 목록을 읽고 쓰는 데 특히 관심이 있습니다.
Brian

2

CSV 파일과 같은 파일을 사용하여 회사 AD 에서 기존 UNIX 시스템 으로 ~ 600 명의 사용자와 ~ 200 개의 그룹을 매일 마이그레이션하는 소규모 프로젝트를 위해 PowerShell을 사용해 보았습니다 . 나는 단일 그룹과 그 사용자를 출발점으로 끌어내는 500 줄 VBScript 스크립트 (!)를 제공 받았다 .

~ 20 줄 PowerShell 스크립트가 모든 것을 할 수 있음이 밝혀졌습니다 ...

* NIX 사용자 (서버 및 클라이언트 측) 인 저는 PowerShell에 매우 기뻐했습니다. 작은 명령 하위 집합 만 알고 있더라도 실제로 강력한 작업을 수행 할 수 있습니다. SSH 와 같은 원격 액세스 가 필요 합니다 ...


조회 psremoting

1

어떻게 사용할 수 없습니까? 출시 / 업그레이드중인 모든 Microsoft 서버 응용 프로그램은 이제 Powershell을 사용하여 관리됩니다. 그런 다음 다소 성가신 UI / 관리 콘솔 이이 코어의 맨 위에 내장되어 제공됩니다.이 코어는 종종 개가 느리고 누군가 지적했듯이 사용할 수있는 기능이 없습니다 ... 그래서 실제로 많은 선택을 할 수는 없습니다 ^ ^


이 작은 powershell 스크립트를 확인하여 어셈블리를 생성하고 모든 powershell 기반 콘솔의 속도를 높이십시오 : msexchangeteam.com/archive/2008/08/01/449426.aspx
Jesse Weigert 2016

1

Powershell은 완벽하지는 않지만 사용했다면 꽤 멋지다는 것을 알고 있습니다. 전체 .net 라이브러리와 기본 제공 cmdlet에 액세스 할 수 있으며 (2.0에서 PS를 사용하여 고유 한 cmdlet을 만들 수 있음) 매우 좋습니다.

내가 누락 된 것으로 생각하는 유일한 것은 언젠가 MS에서 올 것이라고 확신하는 좋은 IDE입니다. 지금은 Idera의 powershell plus 및 adminscripteditor를 사용하여 디버깅이 가능하고 매우 멋집니다.

나는 VB에서 나 자신을 꽤 잘 지킬 수 있었다.

posh와 관련된 가장 큰 프로젝트는 "powershellASP"를 사용하여 powershell 명령을 실행하고 12 개 이상의 VMWare ESXi (무료) 호스트에서 vmware 호스트 및 VM 정보를 가져와 HTML 테이블에 표시하는 기본 웹 페이지를 만드는 것입니다. 무료 VMWare ESXi와 가상 센터가 없기 때문에 회사의 모든 VM에 대한 실시간 개요를 얻을 수있는 다른 방법이 없기 때문에이 작업을 수행했습니다. PowershellASP는 IIS 용으로 작성된 무료 타사 파서이며 MS에서 지원하지 않습니다. 따라서 지금은 일부 제한적인 작업을 수행 할 수 있으며 설명서는 매우 드 se니다.


이 PowerGUI를이고, PowerGUI를 사용 ScriptEditor.exe에, 나는 ... 그없이 살 수있는 방법을 상상할 수 없다
니콜라스 Dorier

Powershell 2에는 훌륭한 Powershell ISE (Integrated Script Editor)가 포함되어 있습니다. CTP 3을 사용할 수 있으며, RTM은 2009 년 10 월에 최종 출시 될 예정입니다.
빠른

1

AD를 통해 다른 항목을 검색하고 서버 공유, 디스크 공간, 사용 된 디스크 공간 등과 같은 중요한 통계를 위해 WMI를 통해 쿼리하는 전체 관리 / 인벤토리 스크립트가 있습니다.

일반 스크립트 :

  1. 사용 가능한 / 사용 된 디스크 공간, RAM 등을 가져옵니다.
  2. BIOS 정보, 서버 제조업체 모델 등에 대한 WMI 쿼리
  3. AV 버전을 확인하고 특정 레지스트리 항목이 있는지 확인하십시오.
  4. Windows 서버의 감사 공유

사용자 스크립트 :

  1. 모든 사용자와 그 그룹이 속한 그룹을 AD에 열거 한 후 Excel 또는 CSV에 기록
  2. TS 및 콘솔을 통해 현재 로그온 한 사용자 찾기

ESX 서버의 모든 VMWare 게스트 머신을 열거하는 머신이 있습니다

x 일 후에 파일을 가져 와서 안전하게 삭제하는 스크립트가 있습니다.

기본적으로 약 200 줄의 VBScript를 수행하고 PowerShell 10에서 수행 할 수 있습니다. VBScript에서는 첨부 파일이 포함 된 전자 메일 보내기와 같이 할 수 없거나 잘 할 수없는 작업을 정기적으로 수행하여 내 스크립트 결과를 정기적으로 보냅니다. 또한 사용자 정의 서비스 이름 및 이벤트 ID를 사용하여 의미 있고 고유 한 항목을 이벤트 로그에 쓸 수 있습니다.

그것이 내 머리 꼭대기에서 생각할 수있는 것입니다. 내가 선택한 도구는 이제 PowerShell이며 인생을 더 쉽게 만듭니다.

기본적으로 Bash 스크립팅이 Unix 관리자와 마찬가지로 시스템 관리자에게 유용합니다.


0

클라이언트 배치 스크립트 (프로그램 실행, 로그온 스크립트 등)를 대체하기 위해 poweshell을보고있었습니다.

그러나 로그온 시간이 10 초 이상 걸린다는 것을 알았습니다. 모든 "비틀기"가 적용되었습니다. 그래서 우리가 사용하고 있던 것에 머물 렀습니다.


세계에서 가장 빠른 것은 아니지만 모든 것에 대해 할 수 있습니다. 몇 개의 드라이브를 매핑하기 만하면 배치 스크립트가 더 빨라집니다.
sysadmin1138

0

.NET 개발자는 아니지만 PS에서 사용할 수있는 모든 .NET 관련 제품에 대한 사용이 제한되어 있습니다. 그러나 Exchange 관리자 (다른 무엇보다도) 인 Exchange 2007의 PowerShell 통합은 굉장합니다. 마지막으로 메일 시스템을위한 안정적인 스크립팅 엔진이 있습니다. 지금까지 모든 사람의 사서함에 대한 월별 통계를 보내 시간에 따라 다양한 이메일 주소가 할당되는 사람을 조정하고 공용 폴더에 대한 권한을 자동으로 생성 및 할당하고 두 메일 사서함 DB 사이에 사용자를로드 밸런싱했습니다. . Ex07 관점의 또 다른 멋진 점은 GUI에서 작업을 수행 한 후 방금 수행 한 작업에 대한 관련 PowerShell 명령이 표시된다는 것입니다. 이를 복사하면 결국 Exchange 환경을 처음부터 되돌릴 수있는 PS 스크립트 세트가 생깁니다.


0

내가 작업하는 서버 점검으로 특정 작업 자동화 (WMI에서 기본 정보 수집 및 이벤트 로그에서 오류 및 경고 수집)

이벤트 로그 처리는 훌륭합니다.

최근에 스크립트가 실행되는 도메인에서 Foxit Reader가 기본적으로 활성화 한 자동 업데이트 팝업을 비활성화하는 스크립트를 작성했습니다. AD에서 컴퓨터 목록을 가져온 다음 해당 컴퓨터가 작동하는지 확인한 다음 1을 0으로 변경합니다.

내가 잊어 버린 한가지!

.NET 라이브러리에 대한 전체 액세스 권한이 거의 있습니다. 정말 복잡한 일을하는 것은 약간의 고통이지만, 필요하다면 거기에 있습니다.


0

우리는 대부분의 Microsoft 상점 인 꽤 많은 관리 작업에 사용합니다. 오래된 파일 정리 또는 시스템 조각 모음 및 결과 기록과 같은 일부 스크립트는 간단합니다. 하나의 스크립트는 대부분 WMI를 사용하여 컴퓨터를 감사하고 결과를 데이터베이스에 기록합니다. 하드웨어 (CPU, RAM, 드라이브 등), 네트워크 정보, 로컬 사용자, 설치된 소프트웨어 및 프로필 정보와 같은 정보를 얻습니다. 웹 서비스를 호출하여 이메일을 보내는 사람이 있습니다. 앞으로도 여전히 사용되고 있는 나머지 VBScript 스크립트를 대체 할 것이라고 생각합니다 . 아직 Exchange 또는 SQL Server 작업에 사용하고 있지 않습니다.

백그라운드 작업, 트랜잭션, 더 나은 예외 처리, 새로운 ISE (Integrated Scripting Environment), 더 나은 디버깅 등을 지원하는 다음 버전을 기대하고 있습니다.


0

내 Windows 관리자는 아직 PowerShell을 사용하지 않습니다. 그들은 모두 그것에 대해 들었지만, 그것에 익숙해지기 위해 시간이 걸리지 않았습니다.

나는 그것을 직접보기로 결정했습니다. 유닉스 쉘 배경에서 온 Windows는 마침내 실제 쉘 프로그래밍 환경을 가져야한다고 생각했습니다. Microsoft가 PowerShell로 잘한 일과 그렇지 않은 일이 있다고 생각합니다.

좋은 점은 PowerShell에서 cmdlet 간의 개체로 개체를 사용하는 것입니다. 이를 통해 텍스트 기반 스크립팅이 작동하기 위해 해킹해야하는 PowerShell 기능이 강화되었습니다.

부정적인 측면에서 그들은 실제로 많은 유닉스 쉘 명령을 사용하지 않습니다. 따라서 학습 곡선은 불필요하게 가파르고 사람들이 Unix에서 PowerShell로 또는 그 반대로 쉽게 이동할 수 없습니다. 가장 많이 수행하는 것은 ls aliasing Get-ChildItem 과 같은 일부 PowerShell cmdlet의 별칭을 정의하는 것 입니다. 모든 명령 줄 스위치는 다릅니다.

내 두 센트 ...


0

이것은 개발자의 답변에 대한 것이지만 실제 상황이므로 향후 몇 개월 안에 특정 시점에서 테스트를 시작할 것입니다. SQL Server 작업을 지속적인 통합 환경 으로 가져 오는 스크립트를 작성하기 위해 PowerShell을 배우기 시작했습니다 . 지속적인 통합 스크립트는 주로 JetBrains TeamCity 를 통해 NAntMSBuild 가 실행 합니다.

또한 일반적인 목적과 특히 SQL Server 데이터베이스 관리 작업을위한 기본 Windows 명령 셸로 PowerShell로 전환하는 것을 고려하고 있습니다.

죄송합니다. 아직 배우고 있기 때문에 아직 공유 할 코드 샘플이 없습니다! 그래도 할 때 일부를 게시하게되어 기쁩니다. :)

다음은 한 줄 코드 샘플입니다. 방금 질문에 대한 다른 질문에 대답했습니다.

설치된 핫픽스가 나열됩니다.

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix

powershell의 hooray는 너무 나쁩니다. 2003 서버에는 기본적으로 설치되어 있지 않습니다. 레지스트리 위치는 도움이되었습니다!
Nick Kavadias

0

가장 쉬운 스크립트 언어는 아니지만 (파이프에 대한 견고한 경험이 있다고 가정) 홀수에 대한 자체 레버리지가 있습니다 ( 단순한 sed 와 같은 것 !!). PowerShell은 매우 강력합니다. Bash 또는 다른 유닉스 쉘 수준 까지는 아니지만 여전히 그렇습니다.

문제가 발생하는 경우 전자 메일 경고와 함께 일부 데이터베이스 내보내기 및 가져 오기를 감독하고 일상적인 배치 작업을 수행하는 데 사용합니다.

비록 실제로 "더 적은 작업을 더 많이 작성하지"않는 것은 아니지만 이미 기본 Windows 셸입니다. PowerShell에는 자세한 기능 (및 .NET 상속)이 있습니다.


0

PowerShell 버전 1.0은 많은 측면에서 크게 제한되었지만 버전 2.0은 잘 나옵니다. 배치 스크립트와 비교하면 훨씬 강력합니다. 나는 실제로 그것을 스크립트로만 사용하지 않고 스크립트에만 사용하므로 내 경험에 따라 색이 지정됩니다. 나는 구문 ( -eqvs ==, -gtvs >등)을 정말로 좋아하지 않지만 이상한 일을해야한다면 .NET에 빠질 수 있다는 것에 감사드립니다 . 3.0 버전에서는 훌륭 할 것이라고 생각합니다. 지금은 "작업 완료"범주에 확실하게 넣었습니다.

주로 코드 배포 자동화에 사용합니다. 이것은 C #에서 무언가를 창조하는 영역입니다. 재귀 디렉토리 복사와 같은 쉘 관련 작업과 Bash 스크립터가 수년 동안 당연히 받아 왔던 것들이 훨씬 쉬워졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.