Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试PowerShell_Powershell - Fatal编程技术网

调试PowerShell

调试PowerShell,powershell,Powershell,我不确定这个脚本有什么问题 我正在尝试将功能分解为几个其他功能(我有编程背景,而不是脚本本身),对我来说,逻辑上应该从“main”函数测试SgnedMpsPackage开始执行以下操作,接受各种可选参数(脚本尚未完成)然后,当调用函数检查路径(即运行)时,工作将在原始调用函数中恢复 我是不是遗漏了什么? 另一方面,如何向调用函数返回值?简单的回报 function CheckPath($path) { if ( test-path -Path $path ) { Wri

我不确定这个脚本有什么问题

我正在尝试将功能分解为几个其他功能(我有编程背景,而不是脚本本身),对我来说,逻辑上应该从“main”函数测试SgnedMpsPackage开始执行以下操作,接受各种可选参数(脚本尚未完成)然后,当调用函数检查路径(即运行)时,工作将在原始调用函数中恢复

我是不是遗漏了什么? 另一方面,如何向调用函数返回值?简单的回报

function CheckPath($path)
{
    if ( test-path -Path $path ) 
        { Write-Host "{0} confirmed to exist." -f $path }
    else
        { Write-Host "{0} DOES NOT exis.\nPlease check and run the script again" -f $path }
    exit { exit }
}


function Test-SignedMpsPackage 
{
    Param(
        [string] $PkgSource,
        [string] $SigSource,
        [string] $Destination
    )
    Process
    {

        #Check that  both files exist
        Write-Host "Check for file existence..."


        CheckPath($PkgSource)
        CheckPath($SigSource)

        #retrieve signatures from file
    }
}
<>与C、C++或C不同,没有“主”入口点函数。任何位于顶层(函数外部)的脚本都会执行。您已经在上面定义了两个函数,但没有调用任何一个。您需要这样做:

function Test-SignedMpsPackage 
{
    ...
}

Test-SignedMpsPackage params
正如@Bill_Stewart所提到的,调用定义的函数就像调用PowerShell命令一样——参数是以空格分隔的,除了计算参数内的表达式外,不使用参数

至于从函数返回值,任何未通过赋值或重定向到文件而捕获的输出(输出流)都将自动成为函数输出的一部分。因此,我将您的CheckPath函数修改为:

function CheckPath($path)
{
    if (Test-Path -Path $path) { 
        Write-Verbose "{0} confirmed to exist." -f $path 
        $true
    }
    else { 
        Write-Verbose "{0} DOES NOT exist.\nPlease check and run the script again" -f $path 
        $false
    }
}

您可以像以前一样使用Write Host,但有时,可能在脚本中,您不希望看到额外的输出。这就是
Write Verbose
的用武之地。设置$VerbosePreference='Continue'以查看详细输出。

您需要编写
检查路径$PkgSource
,而不是
检查路径($PkgSource)
(不要使用参数调用PowerShell函数)。