簡體   English   中英

將數據傳遞到Powershell腳本

[英]Pass data to powershell script

我正在使用PowerShell腳本,該腳本需要從文件中獲取數據並將它們用作寫入其中的函數的參數。 因此,基本上我正在尋找的是JSON或XML文件之類的東西,但是我不確定該使用什么。

我正在尋找的是一種相對易於使用的方法,它傳遞數據類型或對象而不是字符串。

一部分數據在XML中看起來像這樣:

<RegistryEntriesList>
<registryPath>HKLM:\\Software\\Lenovo\\Configuration\\</registryPath> <registryProperty>PATH </registryProperty>
<registryPath>HKLM:\\Software\\Lenovo\\Configuration\\</registryPath> <registryProperty>LOGS </registryProperty>
<registryPath>HKLM:\\Software\\Lenovo\\Connections\\</registryPath> <registryProperty>MinConnectionsPerTarget</registryProperty>
<registryPath>HKLM:\\Software\\Lenovo\\Connections\\</registryPath> <registryProperty>MaxWorkingIscsiConnections</registryProperty>
<registryPath>HKLM:\\Software\\Lenovo\\Connections\\</registryPath> <registryProperty>WaitIntervalInMilliseconds</registryProperty>

另一部分在JSON中會這樣:

"entredInput":[{"title":"Powershell","desc":"first"},
      {"title":"json","desc":"third"},
      {"title":"Configfile","desc":"second"}]

還有更多類似的東西。

基本上,我會將這些用於自動化目的。 我知道PowerShell4.0本身具有cmdlet ConvertFrom-JSON,但它在PS2.0上也可以正常工作,我希望我的腳本可以在任何版本的PowerShell(即Windows的任何版本)上運行。 因此,我想XML可能是一個更好的選擇,但我不確定。 還有其他選擇嗎?

我瀏覽了許多有關JSON和XML的Web鏈接,它們只是讓我很困惑。 請允許我在JSON,XML和SOMETHINGELSE中選擇一個更好的選項。 感謝您解決問題。

對於PowerShell 2.0,您可能要使用XML。 對於任何支持JSON的東西,我都會使用它:通常更輕巧。

替代方法是將psd1文件與Import-LocalizedData cmdlet一起使用。 假設您在當前文件夾中創建文件“ Data.psd1”,如下所示:

@{
    RegistryEntriesList = @(
        @{
            registryPath = 'HKLM:\Software\Lenovo\Configuration\'
            registryProperty = 'PATH'
        },
        @{
            registryPath = 'HKLM:\Software\Lenovo\Configuration\'
            registryProperty = 'LOGS'
        }
    )
}

如您所見,它是帶有單鍵RegistryEntriesList的哈希表。 它的值是可用於散列的哈希表的集合。 您可以導入此數據並將其傳遞給命令,如下所示:

# Our test command...

function New-RegistryEntry {
param (
    [string]$RegistryProperty,
    [string]$RegistryPath
)

    "Got RegistryPath: $RegistryPath and RegistryProperty: $RegistryProperty"
}

Import-LocalizedData -BindingVariable Params -BaseDirectory . -FileName Data.psd1

foreach ($item in $Params.RegistryEntriesList) {
    New-RegistryEntry @item
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM