私は関数を作成していて、出力で異常な動作を観察しています。 Powershell関数の出力での問題
この
はコードです:Function Get-CompInfo
{
[Cmdletbinding()]
PARAM
(
[Parameter(ValueFromPipeline=$true)]
[Alias('Comp', 'Host')]
[string[]]$computername
)
Begin
{
}
Process
{
if ($computername -eq $Null) {
$computername=$env:computername
$VerboseOut="No computer specified. Running against local computer $computername :"
}
Else {
$VerboseOut="Getting information for computer $computername :"
}
Write-Verbose $VerboseOut
$CompInfo=Get-WmiObject Win32_Computersystem -computername $computername
$OSInfo=Get-WmiObject Win32_OperatingSystem -computername $computername
$Properties = [ordered]@{
'Input'=$computername
'SystemName'=$CompInfo.Name
'Manufacturer'=$CompInfo.Manufacturer
'Model'=$CompInfo.Model
'PhysicalMemory'=$CompInfo.TotalPhysicalMemory
'LogicalProcessors'=$CompInfo.NumberOfLogicalProcessors
'OSCaption'=$OSInfo.Caption
'OSArchitecture'=$OSInfo.OSArchitecture
'ServicePackMajorVersion'=$OSInfo.ServicePackMajorVersion}
# Output Information
$obj=New-Object -TypeName PSobject -Property $Properties
write-output $obj
}
End
{
}
}
piplineからパラメータを渡す:
"カルマ"、 "localhost" を|取得-CompInfo
Input : {karuma}
SystemName : KARUMA
Manufacturer : Hewlett-Packard
Model : h9-1400a
PhysicalMemory : 17115000832
LogicalProcessors : 8
OSCaption : Microsoft Windows 10 Pro
OSArchitecture : 64-bit
ServicePackMajorVersion : 0
Input : {localhost}
SystemName : KARUMA
Manufacturer : Hewlett-Packard
Model : h9-1400a
PhysicalMemory : 17115000832
LogicalProcessors : 8
OSCaption : Microsoft Windows 10 Pro
OSArchitecture : 64-bit
ServicePackMajorVersion : 0
を私はコンピュータ名のリストをテキストファイルを渡すとき、私は、出力の同じ種類を取得します。
異なる複数のホスト名に何か指定する場合:
は、Get-CompInfoを-computernameはlocalhost、カルマ
Input : {localhost, karuma}
SystemName : {KARUMA, KARUMA}
Manufacturer : {Hewlett-Packard, Hewlett-Packard}
Model : {h9-1400a, h9-1400a}
PhysicalMemory : {17115000832, 17115000832}
LogicalProcessors : {8, 8}
OSCaption : {Microsoft Windows 10 Pro, Microsoft Windows 10 Pro}
OSArchitecture : {64-bit, 64-bit}
ServicePackMajorVersion : {0, 0}
私はで見BYと同じように、複数の値を渡すときに、テーブルの出力を見て期待していフォーマットテーブルへの配管。
私が望むように出力を得るために何を変える必要があるかについての助けをいただければ幸いです。
ドム・ジョーンズがいい例で、このbehaviousを説明する素晴らしい記事があります:https://technet.microsoft.com/en-
それはそうのようなforeachの中であなたの関数をラップすることにより、修正するのは簡単ですus/library/hh413265.aspx –
こんにちはJames、ありがとう! 私はそれを見落としたとは思えませんが、それを働かせて、セレクトなどでプロパティを渡すことができました。 その記事も面白そうです、それをチェックアウトします! – J1raya