【发布时间】:2021-08-29 19:08:30
【问题描述】:
下面的 Cmdlet 可以正常工作,但在底部代码块中的 do 和 switch 语句中什么都不做?在 ISE 中进行调试不会提供任何帮助。删除| Select-Object 确实使它起作用,但产生了太多信息。删除 -CimSession $hostname 确实使它起作用。所以问题似乎与远程 PC 和/或 SELECT 语句有关。
Get-CimInstance Win32_UserProfile -CimSession $hostname | Select-Object -Property LocalPath, LastUseTime
function Show-Menu {
Write-Host "
1)Option A
2)Option B
3)User Profiles of Remote PC
"}
DO {Show-Menu
$UserChoice = Read-Host "Enter # of tool you want to run"
$hostname=Read-Host "enter hostname"
switch ($UserChoice) {
1 {'You choose opt1'}
2 {'You choose opt2'}
3 {Get-CimInstance Win32_UserProfile -CimSession $hostname | Select-Object -Property LocalPath, LastUseTime}
}
} UNTIL ($hostname -eq '')
- 此 cmdlet 存在相同问题:
{Get-WMIObject Win32_UserProfile -ComputerName $hostname | Select-Object -Property LocalPath,LastUseTime} - 有效,但间隔很有趣:
{Get-WMIObject Win32_UserProfile -ComputerName $hostname | Format-List LocalPath, LastUseTime} - 有效,但间隔很有趣并且有奇怪的 runspaceID 项目:
{Invoke-Command -ComputerName $hostname -HideComputerName -ScriptBlock {Get-WMIObject Win32_UserProfile | Select-Object LocalPath, LastUseTime}}
【问题讨论】:
-
那是因为你指向一个不存在的cimsession。首先创建 cim 会话,然后针对它运行它,或者只是将参数交换为
-ComuterName。我会将-eq换成-ne $null -
@AbrahamZinala 你是什么意思不存在的会话?我如何首先创建它?将其更改为
-ComputerName $hostname有同样的问题。知道为什么Format-List有效,但Select-Object无效? -
@js2010 修复了丢失的大括号,这是一个糟糕的复制/粘贴,它在原始代码中并不是原因。语法错误和最后一句话是什么意思?我是 powershell 和脚本的新手
-
我将它切换到
-NotContains,因为我不断遇到-eq和-ne的问题。
标签: powershell powershell-remoting get-wmiobject select-object