예를 들어 일반적인 질문을하지 않아도되지만 PowerShell 콘솔의 일부 기본 명령을 재사용 가능한 함수와 사용자 지정 cmdlet으로 변환하는 데 어려움이 있습니다. gotchas, 힌트 및 팁과 함께 PowerShell의 구문에 대한 명확한 가이드가 있습니까?(다소) 복잡한 PowerShell 구문에 대한 지침이 있습니까? 예 : BizTalk
예를 들어 BizTalk Host 인스턴스의 관리를 자동화하기 위해 함수를 만들려고합니다. 다음 함수는 작동하지 않지만 (런타임에는 실패 함) PowerShell 콘솔에 개별적으로 붙여 넣을 때 각 개별 행이 작동하고 예상대로 수행됩니다. 그런데
function AddNewHostInstance([string]$ServerName, [string]$HostName, [string]$Login, [string]$Password)
{
[System.Management.ManagementObject]$objServerHost = `
([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_ServerHost").CreateInstance()
$objServerHost["ServerName"] = $ServerName
$objServerHost["HostName"] = $HostName
$objServerHost.Map()
$name = "Microsoft BizTalk Server " + $HostName + " " + $ServerName
[System.Management.ManagementObject]$objServerHost = `
([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_HostInstance").CreateInstance()
$objHostInstance["Name"] = $name
$objHostInstance.Install($Login, $Password, $True)
}
, I는 특히이 경우 수신 오류이 하나이다 :
PS C:\Users\username> createHostInstances $server, $host, $user, $pwd
Exception calling "Map" : "Invalid parameter "
At line:14 char:39
+ $objServerHost.Map <<<<()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
Exception calling "Install" : "Instance of the WMI class is not found.
No instance was found with the specified key. This could be the result of the instance being deleted by another BizTalk Admin session."
At line:19 char:29
+ $objHostInstance.Install <<<< ($Login, $Password, $True)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
PS C:\Users\username>
[편집 또한 조사 결과 보인다 함수 WMI 객체 속성을 지정하고자하지 않는다는 변수를 통해. 제공된 함수 매개 변수에 의존하지 않고 모든 값을 하드 코딩하면 예상대로 작동합니다!
기본적으로,이 작품이 반면
# Using hard-coded value
$objServerHost["HostName"] = "TestHost"
을하지 않습니다 가이드가 가서, 내가 지금까지 ... 왜
마지막 예에서 스크립트 오류가 발생하지 않았습니까? '$ HostName'은 할당 할 때 실제 문자열 (null이 아니거나 비어 있지 않습니다)입니까? PowerShell에서 리터럴 문자열 값을 할당하거나 변수 이름을 사용할 때 (변수가 문자열 유형 인 경우)에는 차이가 없어야합니다. –