使用powershell循环与net.exe命令错误

时间:2015-12-08 17:05:33

标签: asp.net .net powershell

我正在尝试使用powershell编写一个脚本,该脚本在满足打开3个或更少文件的特定情况的计算机集合上调用net.exe的删除。显然,我是相当新的,因为我遇到了奇怪的错误。

使用Microsoft's blog处的示例,我在net session之外创建了以下功能。

Function Get-ActiveNetSessions
{
    # converts the output of the net session cmd into a PSobject
    $output = net session | Select-String -Pattern \\
    $output | foreach {
        $parts = $_ -split "\s+", 4
        New-Object -Type PSObject -Property @{
            Computer = $parts[0].ToString();
            Username = $parts[1];
            Opens = $parts[2];
            IdleTime = $parts[3];
        }
    }
}

确实产生了一个可以运用逻辑的可用对象。

我可以用 $computerList = Get-ActiveNetSessions | Where-Object {$_.Opens -clt 3} | Select-Object {$_.Computer}将所有少于三个的计算机拉入变量。

失败的是下面的循环

ForEach($computer in $computerList)
{
    net session $computer /delete
}

错误

net : The syntax of this command is:
At line:5 char:5
     net session $computer /delete
   CategoryInfo          :NotSpecified (The syntax of this command is::String) [], RemoteException
   FullyQualifiedErrorId : NativeCommandError

NET SESSION
[\\computername] [/DELETE] [/LIST]

尝试在执行前调用$computer = $computer.ToString()来运行它,以便它看到一个字符串会导致脚本挂起而不会丢弃会话,从而迫使我关闭并重新打开ISE。

我该怎么做才能使这个循环工作?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

Net会话期望服务器名称前面有<Role name="myrole"> <SchemaGrant access="none"> <CubeGrant cube="Transaction" access="all"> <HierarchyGrant hierarchy="[Product.Product]" access="custom" rollupPolicy="partial"> <MemberGrant member="[Product.Product].[Cottage Foods]" access="all"/> <MemberGrant member="[Product.Product].[Vegetables]" access="all"/> .... </HierarchyGrant> .... </CubeGrant> </SchemaGrant> </Role> ,看起来像。你试过试试吗?