gpt4 book ai didi

powershell - 如何在PowerShell中使用Function从命令行执行?

转载 作者:行者123 更新时间:2023-12-02 23:35:49 26 4
gpt4 key购买 nike

我想用命令行执行我的脚本。我在脚本中使用函数。

我使用了以下脚本:

Function Get-IniFile
{
Param(
[parameter(mandatory=$true)][string]$FilePath
)
$input_file = $FilePath
$ini_file = @{}

Get-Content $input_file | ForEach-Object {
$_.Trim()
} | Where-Object {
$_ -notmatch '^(;|$)'
} | ForEach-Object {
if ($_ -match '^\[.*\]$') {
$section = $_ -replace '\[|\]'
$ini_file[$section] = @{}
} else {
$key, $value = $_ -split '\s*=\s*', 2
$ini_file[$section][$key] = $value
}
}

$Get = $ini_file.Class.Amount
$Get
}

我使用以下命令从命令行执行此脚本:
PowerShell.ps1 Get-IniFile -FilePath

执行此代码时没有任何结果,但是如果删除“ Function Get-IniFile”,则会得到Amount的值。

这是我的INI文件
[Class]
Amount = 1000
Feature = 20

[Item]
Set = 100
Return = 5

最佳答案

您必须在脚本中调用函数。脚本代码类似于C#或Java中的main函数。

PowerShell.ps1内容:

# Global script parameters.
Param(
[parameter(mandatory=$true)][string]$FilePath
)

# Definition of the function
Function Get-IniFile
{
Param(
[parameter(mandatory=$true)][string]$Path
)
$input_file = $Path
$ini_file = @{}

Get-Content $input_file | ForEach-Object {
$_.Trim()
} | Where-Object {
$_ -notmatch '^(;|$)'
} | ForEach-Object {
if ($_ -match '^\[.*\]$') {
$section = $_ -replace '\[|\]'
$ini_file[$section] = @{}
} else {
$key, $value = $_ -split '\s*=\s*', 2
$ini_file[$section][$key] = $value
}
}

$Get = $ini_file.Class.Amount
$Get
}

# Calling the function with the global parameter $FilePath
Get-IniFile $FilePath

关于powershell - 如何在PowerShell中使用Function从命令行执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295558/

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