2010. 12. 28. 06:30

특정 cmdlet 상당한 메모리를 필요로 합니다.
그러나 시스템상에서 파워쉘에 할당한 메모리가 넉넉한 편은 아니라서 이부분을
위해 메모리할당을 높일 필요가 있습니다.

 

현재 시스템에서 파워쉘에 할당한 메모리를 확인합니다.

get-item WSMan:\localhost\Shell\MaxMemoryPerShellMB

 

그림1. 현재할당량

 

 

 


그럼 1G를 할당해보겠습니다.

Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 100

 

그림2. 적용된 할당량


 

위의 설정은 원격 스크립트 작업시 매우 필요한 사항입니다.
일부 cmdlet에서 out of memory 예외가 나온다면 꼭 적용해보시기 바랍니다.


원본: http://vstarmanv.tistory.com/entry/파워쉘에게-할당된-메모리-변경

Posted by 알 수 없는 사용자
:
2010. 10. 26. 17:28

파워쉘에서 NULL 비교는 파라미터 타입을 지정해 주지 않았을경우에는 정상적으로 동작한다.
그러나 파라미터값을 [string]으로 지정해 줬을 경우에는 비교에 문제가 있을 수 있다

function checkNull([string]$a, $b)

{

    if ($a -eq $null) { Write-Host "a is null" } else { write-Host "a is not null" }

    if ($a -eq [String]::Empty) { Write-Host "a is null" } else { write-Host "a is not null" }

    if (!$a) { Write-Host "a is null" } else { write-Host "a is not null" }

    if ($b -eq $null) { Write-Host "b is null" } else { Write-Host "b is not null" }

}



위의 함수의 결과값은 아래와 같다.

Space>checkNull $null $null
a is not null
a is null
a is null
b is null

결론적으로 string으로 지정된 파라미터를 NULL과 비교할때는 ($a -eq $null) 과 같은 표현은 쓰지 않는 것이 좋다.


원본: http://vstarmanv.tistory.com/entry/PowerShell-에서-NULL-처리
Posted by 알 수 없는 사용자
:
2010. 10. 26. 17:26

오늘은 SqlServerAlias 에 대해 말씀드리고자 합니다. SqlServerAlias는 클라이언트들의 connection 를 빠르고, 편리하게 해줍니다
자세하게 나온 사이트가 있네요 http://www.mssqltips.com/tip.asp?tip=1620 참고

 

그럼 WMI를 이용해서 제 서버에 등록된 SQL Alias정보를 볼까요

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 –class SqlServerAlias

 

등록된 정보가 없으면 아무내용도 나오지 않겠지만 Sql Server Configuration Manager 를 통해 Alias를 등록한 경우에는 등록된 내용이 나옵니다.이 모습을 Sql 구성도구에서 확인하면 아래와 같습니다.





등록된 Alias oldship 를 삭제해 보도록 하겠습니다.

$strAlias="oldship"

$oldInfo=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10

-class SqlServerAlias -filter "AliasName=$oldInfo"

$oldInfo.Delete()

 


참 쉽죠~~


아쉽게도 Get-WmiObject 는 존재하는 클라이언트 Alias를 삭제하는 역할만 가능합니다.
별칭을 신규로 생성하기 위해선 별도의 .NET 클래스 Microsoft.SqlServer.Management.Smo.Wmi.ServerAlias 를 로드해서 사용해야하고 이 클래스가 포함된 어셈블리는 2008의 경우 Microsoft.SqlServer.SqlWmiManagement.dll 입니다.(2005의 경우는 Microsoft.SqlServer.Smo)


그럼 우선 클래스를 사용하기 위해 어셈블리를 로드해볼까요

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null

 


어셈블리를 로드후 SQL를 위한 WMI를 포함하고 있는 SMO 오브젝트를 생성해야 합니다.
이 오브젝트는 앞으로 우리가 생성할 SQL Alias의 부모가 됩니다.

$strComputer='.'  #localhost

$objComputer=New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer $strComputer #초기화

$newalias=New-Object ("Microsoft.SqlServer.Management.Smo.Wmi.ServerAlias")    

$newalias.Parent=$objComputer

$newalias.Name='newAlias' # name of the new alias

$newalias.ServerName='SPACESHIPS'  #연결할 원본 인스턴스

$newalias.ConnectionString=9009    #port

$newalias.ProtocolName='tcp'        #프로토콜

$newalias.Create()

 

아래와 같이 별칭이 생성되었습니다.




다음엔 ServerNetworkProtocol에 대해 알아보겠습니다.


원본: http://vstarmanv.tistory.com/entry/MSSQLWMI-for-SQL-Management3-SqlServerAlias

Posted by 알 수 없는 사용자
:
2010. 10. 5. 06:00

닷넷에서는 포인터나 핸들을 나타내는데 사용하는 IntPtr  이라는 구조체가 있습니다.
(자세한 내용은 http://msdn.microsoft.com/ko-kr/library/system.intptr(VS.80).aspx)
32bit 운영체제 상에서 포인터는 4byte, 64bit에서는 8byte이므로
아래의 간단한 메소드를 이용하여 운영체제의 플랫폼을 확인할 수 있습니다.

if ([IntPtr]::Size -eq 8)
{
    "This is 64Bit PlatForm"
}
else
{
    "This is 32Bit PlatForm"
}


원본: http://vstarmanv.tistory.com/entry/플랫폼-구분6432bit

Posted by 알 수 없는 사용자
:
2010. 10. 5. 06:00

오늘은 파워쉘 디버깅에 대해서 알아볼까 하는데요

스크립트 작성시 디버깅은 바로 Set-PSDebug에게 맡기시면 됩니다.

 


 Set-PSDebug -Trace 1

Trace 단계는 최대 2까지 지원되며 1보다 2가 자세한 디버깅이 가능합니다.

 


Set-PSDebug –Step

실행되는 단계별로 확인할 수 있습니다. 가장 디버깅에 유효한 옵션이 아닐까하네요..

 


Set-PSDebug –Off

디버깅을 해제합니다.


원본: http://vstarmanv.tistory.com/entry/PowerShell-DebugSet-PSDebug

'Powershell > @우주인' 카테고리의 다른 글

[MSSQL]WMI for SQL Management(3)-SqlServerAlias  (0) 2010.10.26
플랫폼 구분(64/32bit)  (0) 2010.10.05
[MSSQL]WMI for SQL Management(2)-ClientNetworkProtocol  (0) 2010.10.05
Clip을 이용한 복사  (0) 2010.09.15
Add-PSSnapin  (0) 2010.09.15
Posted by 알 수 없는 사용자
:
2010. 10. 5. 06:00

이번엔 ClientNetworkProtocol Class에 대해 알아보겠습니다.
ClientNetworkProtocol
Client 의 네트워크 접속 프로토콜의 정의와 우선순위를 결정하는 클래스입니다.

지난번과 같이 WMIObject ClientNetworkProtocol 클래스를 가져와 볼까요

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol | Select-Object ProtocolName, ProtocolDisplayName, ProtocolOrder



저 같은 경우 로컬에 SQL이 깔려있기 때문에 우선순위 첫번째가 메모리로 나오네요
원격인 경우 TCP 1 로 보입니다. 참고로 ProtocolOrder 0은 비사용중임을 나타냅니다.



 이 클래스의 메소드들은..

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol |
Get-Member -memberType Method | Select-Object Name



이와 같이 프로토콜의 사용여부와 우선순위를 설정하는 메소드들입니다.



위에 메소드를 이용한 아래의 간단한 스크립트는 Named Pipes 를 비사용으로 바꾸는 역할을 합니다.

$WClientNetProtol=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol -filter "ProtocolName='np'"
$WClientNetProtol.SetDisable()



Named Pipes가 비사용중으로 바뀌었네요



ClientNetworkProtocol의 속성 변경을 원할 경우 ClientNetworkProtocolProperty 클래스를 이용하시면 됩니다.

살짝 살펴보면 ..

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class

ClientNetworkProtocolProperty | Select-Object PropertyName, PropertyNumVal, PropertyStrVal,ProtocolName


기본접속 포트가 1433으로 설정되어 있네요


 아래는 TCP/IP 프로토콜의 기본접속 포트를 1433에서 15886로 변경하는 스크립트입니다.

$WClientNetProto=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 –class
ClientNetworkProtocolProperty -filter "PropertyName='Default Port'"

$ WClientNetProto.SetNumericalValue(15886)


참고: SQL Server Administration with Windows PowerShell

원본: http://vstarmanv.tistory.com/entry/MSSQLWMI-for-SQL-Management2

'Powershell > @우주인' 카테고리의 다른 글

플랫폼 구분(64/32bit)  (0) 2010.10.05
PowerShell Debug(Set-PSDebug)  (0) 2010.10.05
Clip을 이용한 복사  (0) 2010.09.15
Add-PSSnapin  (0) 2010.09.15
PowerShell Default Snap-Ins  (0) 2010.09.15
Posted by 알 수 없는 사용자
:
2010. 9. 15. 19:19


안녕하세요 @우주인입니다.
파워쉘을 사용할때 출력결과가 너무 많아 보거나, 따로 복사하기 까다로울때가 있습니다.
이때 유용한 cmdlet이 바로 clip 입니다.  간단히 명령어 뒤에 | 연결하여 사용하시면 Windows Clipboard로 자동복사되니 워드패드나 메모장에 출력하여 사용이 가능합니다.

PS C:\Users\jaguly> Get-Process | clip


원본: http://vstarmanv.tistory.com/entry/Clip을-이용한-복사

'Powershell > @우주인' 카테고리의 다른 글

PowerShell Debug(Set-PSDebug)  (0) 2010.10.05
[MSSQL]WMI for SQL Management(2)-ClientNetworkProtocol  (0) 2010.10.05
Add-PSSnapin  (0) 2010.09.15
PowerShell Default Snap-Ins  (0) 2010.09.15
.NET Assembly load  (0) 2010.09.15
Posted by 알 수 없는 사용자
:
2010. 9. 15. 19:18


안녕하세요 @우주인입니다.
이번에는 Add-PsSnapIn를 이용하여 스냅인을 추가하는 법을 살펴보고자 합니다.
Add-PsSnapIn를 이용하면 내장되어 있는 명령어외에 해당 스냅인에서 지원하는 cmdlet를 모두 이용할 수 있습니다.

Sql이나 Exchange서버, AD등을 컨트롤하는데 많이 쓰이며
저같은 경우 쉐어포인트를 주로 컨트롤하는 이용합니다.

이용법은 help Add-PsSnapIn 를 통해 보시면 자세히 나와있으며 주로 Add-PsSnapIn NAME 으로 해당 스냅인을 추가합니다.

추가할 수 있는 스냅인의 종류를 볼려면 아래와 같이 Get-PSSnapin를 이용하시면 됩니다.


역시 제 PC에는 쉐어포인트 관련 스냅인이 지원되는군요

그럼 간단히 쉐어포인트에 사이트모음을 가져와 볼까요


당연히 위에 Add-PSSnapin 을 이용해 쉐어포인트 파워쉘 스냅인을 가져오지 않았다면 Get-SPSite는 실행시 오류가 발생합니다.

이와 같이 원하는 스냅인을 추가하여 서비스를 컨트롤 할 수 있습니다.


자신의 PC에 있는 모든 스냅인을 등록하고자 할때는 아래와 같이 한번에 처리가 가능합니다.




참고로 AD의 경우는
C:\PS>add-PSSnapIn Microsoft.Exchange, Microsoft.Windows.AD
설명
-----------
이 명령은 Microsoft Exchange 및 Active Directory 스냅인을 현재 세션에 추가합니다.



원본: http://vstarmanv.tistory.com/entry/Add-PSSnapin

'Powershell > @우주인' 카테고리의 다른 글

[MSSQL]WMI for SQL Management(2)-ClientNetworkProtocol  (0) 2010.10.05
Clip을 이용한 복사  (0) 2010.09.15
PowerShell Default Snap-Ins  (0) 2010.09.15
.NET Assembly load  (0) 2010.09.15
[MSSQL]WMI for SQL Management(1)  (0) 2010.09.15
Posted by 알 수 없는 사용자
:
2010. 9. 15. 19:18

파워쉘 Defalut 스냅인

기본적으로 파워쉘이 설치된 환경이라면 7개의 core snap-in이 로드되며, 이 때문에 해당 cmdlets를 사용할 수 있습니다.  당연히 core snap-in 들은 각자의 namespace를 가지고 있습니다.

 

1. Core (MicroSoft.PowerShell.core)
 
-       파워쉘 엔진, alias, 환경, 변수 , 함수에 관련되 cmdlet 

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "core"}

 

2. Host (MicroSoft.PowerShell.Host)

 - hosting에 관련된 스냅인

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "host"}

 

3. PowerShell.Management (MicroSoft.PowerShell.Management)

 - 프로세스나 서비스 관리 등 기타 윈도우 management 관련 cmdlet

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "PowerShell.Management"}

 

4. Security (MicroSoft.PowerShell.Security)

 - 파워쉘 보안관련 스냅인

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "Security"}


5. Utility (MicroSoft.PowerShell.Host)

 - Write-hostFormat-list 와 같은data manipulate 관련 cmdlets snap-in

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "Utility"} 


6.
Diagnostics (MicroSoft.PowerShell.Diagnostics)

 - performance counters 나 이벤트 로그 관련 cmdlets snap-in

 Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "Diagnostics"}


7.
WsMan.Management (MicroSoft.WsMan.Management)

 - WsMan 관련 cmdlets snap-in

Get-Command -commandtype cmdlet | Where-Object {$_.PSSnapin -match "WsMan.Management"}

 

 

 원본: http://vstarmanv.tistory.com/entry/PowerShell-Default-Snap-Ins



'Powershell > @우주인' 카테고리의 다른 글

Clip을 이용한 복사  (0) 2010.09.15
Add-PSSnapin  (0) 2010.09.15
.NET Assembly load  (0) 2010.09.15
[MSSQL]WMI for SQL Management(1)  (0) 2010.09.15
파워쉘을 이용한 DOM 사용  (0) 2010.09.09
Posted by 알 수 없는 사용자
:
2010. 9. 15. 19:17

 

현재 도메인에서 파워쉘이 기본적으로 로드하는 .NET Assembly 리스트를 아래의 명령어로 알 수 있습니다.

[System.AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object { split-path $_.Location -leaf } | Sort-Object



등록된 어셈블리 외에 추가로 어셈블리를 로드 할 때는

[reflection.assembly]::LoadWithPartialName(“”) 

 = application 디렉토리나 global assembly cache 로부터 assembly를 로드합니다.

 원본: http://vstarmanv.tistory.com/entry/NET-Assembly-load

'Powershell > @우주인' 카테고리의 다른 글

Add-PSSnapin  (0) 2010.09.15
PowerShell Default Snap-Ins  (0) 2010.09.15
[MSSQL]WMI for SQL Management(1)  (0) 2010.09.15
파워쉘을 이용한 DOM 사용  (0) 2010.09.09
파워쉘 부팅매크로(Invoke-Item)  (0) 2010.09.09
Posted by 알 수 없는 사용자
:

BLOG main image
Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

카테고리

분류 전체보기 (76)
Windows (2)
Powershell (56)
마성민 (3)
엉스데브 (20)
윈디안 (9)
10000wo (2)
cyber1008 (2)
Exterminate (3)
shc1313 (1)
junghwan83 (0)
@우주인 (16)
AD (0)
Exchange (6)
System Center (9)
IIS (0)
SQL (3)
Sharepoint (0)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Total :
Today : Yesterday :