Powershell功能失败

Jam*_*own 0 powershell

我发誓我在这里错过了一些简单的东西......

这是一个获取磁盘信息的简单脚本:

function get-disks {
try { $disks = gwmi win32_logicaldisk -co $server}
catch { write "$server : Can't connect"}
}
get-disks
$disk.deviceid
Run Code Online (Sandbox Code Playgroud)

仅gwmi命令就完美无缺.单独的"$ disks = gwmi ..."命令完美无缺.try {...} catch {...}行单独运行完美.

但是只要我加载函数并调用'get-disks',我就不会收到任何错误,但是$ disks是空的.

oɔɯ*_*ɯǝɹ 5

$server参数,并且$disks变量是该函数的外部本地到内部功能和不可见的(未定义).

您需要提供服务器名称作为函数参数(从外部),您需要$disks从函数返回变量值(从里到外)并捕获它的值.

function Get-Disks {
    param(
        [Parameter(Mandatory = $true)]
        [string] $Server
    )

    try { 
      $result = gwmi win32_logicaldisk -co $Server;
      return $result    # <--
    }
    catch { write "$Server : Can't connect"}
}

$disks = Get-Disks -Server "localhost"
Run Code Online (Sandbox Code Playgroud)

请注意,$result函数内部的变量是函数$disks外部变量的另一个变量.

为简单起见,您可以按如下方式编写函数:

function Get-Disks {
    param(
        [Parameter(Mandatory = $true)]
        [string] $Server
    )

    # just return the output of gwmi directly 
    gwmi win32_logicaldisk -co $Server;
}
Run Code Online (Sandbox Code Playgroud)