Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 有关于(有些)复杂的PowerShell语法的指南吗?Biztalk示例_Syntax_Powershell_Biztalk - Fatal编程技术网

Syntax 有关于(有些)复杂的PowerShell语法的指南吗?Biztalk示例

Syntax 有关于(有些)复杂的PowerShell语法的指南吗?Biztalk示例,syntax,powershell,biztalk,Syntax,Powershell,Biztalk,我可能不应该用一个特定的例子来问一般性的问题,但我很难将一些基本命令从PowerShell控制台转换为可重用函数和自定义cmdlet。是否有关于PowerShell语法的权威指南,其中包含了陷阱、提示和提示 例如,我正在尝试创建一个函数,以便自动化BizTalk主机实例的管理。以下函数不起作用(在运行时失败),但当单独粘贴到PowerShell控制台中时,每一行都能正常工作和执行 function AddNewHostInstance([string]$ServerName, [string]$

我可能不应该用一个特定的例子来问一般性的问题,但我很难将一些基本命令从PowerShell控制台转换为可重用函数和自定义cmdlet。是否有关于PowerShell语法的权威指南,其中包含了陷阱、提示和提示

例如,我正在尝试创建一个函数,以便自动化BizTalk主机实例的管理。以下函数不起作用(在运行时失败),但当单独粘贴到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)
}
顺便说一下,我在这个特殊情况下收到的错误是:

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>
鉴于此,不:

# Using function supplied parameter
$objServerHost["HostName"] = $HostName

不过,我还是不明白为什么…

就导游而言,最好的书是布鲁斯·帕耶特的。二月份会有第二版,但是你可以提前获得电子版的草稿。那里还有几本免费的书。Tobias Weltner博士和我还有一本<60页的电子书-。最后一篇文章介绍了许多问题,并为您提供了PowerShell工作原理的心智模型

请更正错误,我想知道使用PowerShell对WMI的内置支持是否会更幸运,例如:

$namespace = 'root/MicrosoftBizTalkServer' 
$host = Get-WmiObject -namespace $namespace -class MSBTS_HostInstance
查看生成的WMI对象是否具有适当的数据和方法(映射和安装):


关于Map()错误,有时使用WMI时,您需要返回并执行$objServerHost.psbase.Invoke(“Map”)。除此之外,我还为BizTalk管理提供了一个指南,您可能会发现它非常有用。

我认为Get-WmiObject仅用于检索现有对象。它可以用来创建WMI类的新实例吗?不幸的是,这在我的情况下不起作用。我得到一个错误“方法调用失败,因为System.Management.Automation.pInternalMemberSet不包含方法名称“Invoke”。感谢链接;我偶然发现了它们。你确定上一个示例中没有脚本错误吗?分配时,
$HostName
是否为实际字符串(非空或空)?在PowerShell中,指定文字字符串值与使用变量名(当变量为字符串类型时)之间应该没有区别。
$namespace = 'root/MicrosoftBizTalkServer' 
$host = Get-WmiObject -namespace $namespace -class MSBTS_HostInstance
$host | fl *
$host | Get-Member