gpt4 book ai didi

powershell脚本从txt中读取参数

转载 作者:行者123 更新时间:2023-12-04 00:31:44 25 4
gpt4 key购买 nike

我有一个带有 2 个参数(名称和位置)的脚本。我按照此处的帖子将名称和位置放入 txt 文件中 Powershell parameters from file .我被提示输入第二个参数的值:

Import-Csv 'C:\temp\paramtest.txt' | % { C:\temp\script\paramtest.ps1 @_ }

cmdlet paramtest.ps1 at command pipeline position 1 Supply values for the following parameters: param2:**

这是我的 .txt 的样子:

"param","param2"
"foo","c:\temp"
"bar","c:\temp"
"foobar","c:\temp"

Powershell 脚本很简单:

Param (
[Parameter(mandatory=$true,Position=1)]
[string]$param,
[Parameter(mandatory=$true,Position=2)]
[string]$param2
)

$greeting='Hello to ' + $param + ' and ' + $param2
Write-Output $greeting

感谢任何帮助。

最佳答案

当您使用 Import-Csv cmdlet 导入文件时,您会得到 PSCustomObject 类型的对象。

splatting operator (@)需要哈希表,而不是 PSCustomObject


PowerShell 3.0+

要从 txt 文件导入参数,您可以使用 ConvertFrom-StringData cmdlet 将它们作为哈希表返回:

Get-Content -Path .\test.txt -ReadCount 2 | ForEach-Object {
$Splat = ConvertFrom-StringData $($_ -join [Environment]::NewLine)
.\paramtest.ps1 @Splat
}

然后像这样格式化你的文本文件:

文本.txt

param=foo
param2=c:\\temp
param=bar
param2=c:\\temp
param=foobar
param2=c:\\temp

PowerShell 2.0

如果您使用的是 PowerShell 2.0,或者如果您需要保留 csv 格式,您可以通过将 PSCustomObject 中的值引用到一个新的哈希表中来自己完成这项工作,并将其展开:

Import-Csv .\test.txt |ForEach-Object {
$Splat = @{}
$_.psobject.Properties |ForEach-Object { $Splat[$_.Name] = $_.Value }
.\paramtest.ps1 @Splat
}

关于powershell脚本从txt中读取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com