我有以下使用函数的powershell脚本,并且在ISE中运行正常:
Get-ComputerSessions -Computer "localhost"
# ===========================================================================
# Functions
# ===========================================================================
Function Get-ComputerSessions {
<#
.SYNOPSIS
Retrieves tall user sessions from local or remote server/s
.DESCRIPTION
Retrieves tall user sessions from local or remote server/s
.PARAMETER computer
Name of computer/s to run session query against.
.NOTES
Name: Get-ComputerSessions
Author: Boe Prox
DateCreated: 01Nov2010
.LINK
https://boeprox.wordpress.org
.EXAMPLE
Get-ComputerSessions -computer "server1"
Description
-----------
This command will query all current user sessions on 'server1'.
#>
[cmdletbinding(
DefaultParameterSetName = 'session',
ConfirmImpact = 'low'
)]
Param(
[Parameter(
Mandatory = $True,
Position = 0,
ValueFromPipeline = $True)]
[string[]]$computer
)
Begin {
$report = @()
}
Process {
ForEach($c in $computer) {
# Parse 'query session' and store in $sessions:
$sessions = query session /server:$c
1..($sessions.count -1) | % {
$temp = "" | Select Computer,SessionName, Username, Id, State, Type, Device
$temp.Computer = $c
$temp.SessionName = $sessions[$_].Substring(1,18).Trim()
$temp.Username = $sessions[$_].Substring(19,20).Trim()
$temp.Id = $sessions[$_].Substring(39,9).Trim()
$temp.State = $sessions[$_].Substring(48,8).Trim()
$temp.Type = $sessions[$_].Substring(56,12).Trim()
$temp.Device = $sessions[$_].Substring(68).Trim()
$report += $temp
}
}
}
End {
$report
}
}
但是,如果我尝试从powershell命令行运行此命令,则会出现以下错误:
PS C:\Downloads\Powershell> C:\Downloads\Powershell\test.ps1
The term 'Get-ComputerSessions' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At C:\Downloads\Powershell\test.ps1:25 char:21
+ Get-ComputerSessions <<<< -Computer "localhost"
+ CategoryInfo : ObjectNotFound: (Get-ComputerSessions:String) [], CommandNotFoundExc
eption
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\Downloads\Powershell>
谁能告诉我哪里出错了,我是否需要将该功能放在一个单独的模块中?
我的背景是VB脚本,所以我很难掌握逻辑。
非常感谢提前。
答案 0 :(得分:2)
移动此电话:
Get-ComputerSessions -Computer "localhost"
低于Get-ComputerSession函数的定义,然后重试。在定义函数之前,PowerShell正在遇到函数调用。
答案 1 :(得分:1)
在定义函数之前无法调用函数 - 将函数移动到函数定义之后的任何位置
它可能在ISE中工作,因为它是在加载时或在运行脚本之前的某个地方定义的