小编Scr*_*key的帖子

Powershell:如何创建自定义对象并将其传递给PowerShell中的功能?

我想在PowerShell中创建一个具有属性的自定义对象,然后将该对象传递给一个函数.我找到了创建自定义对象的在线示例,但它使用了HashTable.但是,我有单个对象的属性,而不是一个对象数组.

  1. 如果可能的话,我想创建单个对象而不是HashTable.
  2. 如果要使用HashTables,我该如何检索对象并将其传递给函数?

以下是我的代码示例:

function CreateObject()
{       
  $properties = @{      
    'TargetServer' = “ServerName”;
    'ScriptPath' = “SomePath”;
    'ServiceName' = "ServiceName"
 }

   $obj = New-Object -TypeName PSObject -Property $properties    

   Write-Output $obj.TargetServer
   Write-Output $obj.ScriptPath
   Write-Output $obj.ServiceName

   return $obj
}

 function Function2([PSObject] $obj)
{   
   Do something here with $obj
}


$myObj = CreateObject

Function2 $myObj
Run Code Online (Sandbox Code Playgroud)

编辑1
感谢@Frode和@Matt.我不知道'return'语句也会返回其他结果.以下工作会吗?

function CreateObject()
{      
    return New-Object -TypeName PSObject -Property @{     
       'TargetServer' = "ServerName"
       'ScriptPath' = "SomePath"
       'ServiceName' = "ServiceName"
      }
}

function Init()
{
   // Do something here …
Run Code Online (Sandbox Code Playgroud)

powershell

3
推荐指数
1
解决办法
1万
查看次数

PowerShell"get-childitem2"大小超过~3.5gb

此链接指向Get-Childitem2,该功能允许遍历260个字符的限制.

https://gallery.technet.microsoft.com/scriptcenter/Get-ChildItemV2-to-list-29291aae#content.

这是一个非常好用的功能,然而,它误报文件大小超过~3.5GB,这是我运行它的全部原因.我很难承认我只是不够好找到并修复代码,所以它准确地报告文件大小超过~3.5GB.

我想它在这里的某个地方; 因为似乎没有'nFileSizeHigh'选项:

                    } Else {
                    $Object.Length = [int64]("0x{0:x}" -f $findData.nFileSizeLow)
                    $Object.pstypenames.insert(0,'System.Io.FileInfo')
                }
Run Code Online (Sandbox Code Playgroud)

我选择了Robocopy和AlphaFS,因为我对它们都有各种各样的问题.文件大小问题示例:

get-childitem C:\ Temp\Huge :(正确的大小,以字节为单位)

3166720000 - sp1_vl_build_x64_dvd_617403.iso
5653628928 - server_2016_x64_dvd_9327751.iso
4548247552 - it_English_-3_MLF_X19-53588.ISO

get-childitem2 C:\ Temp\Huge:

3166720000 - sp1_vl_build_x64_dvd_617403.iso
1358661632 - server_2016_x64_dvd_9327751.iso
253280256 - it_English_-3_MLF_X19-53588.ISO

powershell get-childitem

2
推荐指数
1
解决办法
426
查看次数

比较一个数组中的字符串,另一个数组中使用通配符字符串

我有两个数组,$a并且$b,在数组中$a是一个字符串,可以部分匹配其中一个条目$b,假设我可以使用通配符:

$a = "1", "Computer Name", "2"
$b = "3", "4", "Full Computer Name Here"

foreach ($line in $a) {
    foreach ($line2 in $b) {
         where "*$line*" -like "*$line2*"
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里想一切简单的后拿到"这个数组,数组匹配",进入foreach了一个数组,然后尝试了所有的Select-StringCompare-Object $line $line2 -ExcludeDifferent -IncludeEqual -PassThru,但不能得到任何工作.

理想情况下,它会返回"匹配的完整计算机名称".

arrays powershell compare wildcard

2
推荐指数
2
解决办法
773
查看次数

标签 统计

powershell ×3

arrays ×1

compare ×1

get-childitem ×1

wildcard ×1