Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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 是否在不创建配置文件的情况下新建PsSession?_Powershell_Powershell Remoting_User Profile - Fatal编程技术网

Powershell 是否在不创建配置文件的情况下新建PsSession?

Powershell 是否在不创建配置文件的情况下新建PsSession?,powershell,powershell-remoting,user-profile,Powershell,Powershell Remoting,User Profile,我需要使用New PsSession在远程计算机上运行多个命令以从注册表收集信息 问题是,当我运行New PsSession时,它会在计算机上用我的用户名创建一个用户配置文件,并且在我断开并删除会话后,配置文件正确地“卸载”,但文件保留在C:\USERS\XXX中 这是一个问题,因为有时我的同事在重新映像计算机时会在该计算机上看到我的用户配置文件,并认为我正在登录该计算机,即使我只是运行了一些命令来检查注册表设置 我的问题:有没有一种方法可以创建一个PsSession,而不用在目标计算机上创建一

我需要使用
New PsSession
在远程计算机上运行多个命令以从注册表收集信息

问题是,当我运行
New PsSession
时,它会在计算机上用我的用户名创建一个用户配置文件,并且在我断开并删除会话后,配置文件正确地“卸载”,但文件保留在C:\USERS\XXX中

这是一个问题,因为有时我的同事在重新映像计算机时会在该计算机上看到我的用户配置文件,并认为我正在登录该计算机,即使我只是运行了一些命令来检查注册表设置

我的问题:有没有一种方法可以创建一个PsSession,而不用在目标计算机上创建一个以您的名字命名的用户配置文件,或者有其他方法可以让它在断开连接并删除后自行清理

用于说明这种情况的示例代码:

New-PSSession -ComputerName XXXX -name TEST

start-sleep 3 

Disconnect-PSSession -Name TEST 
Remove-PSSession -Name TEST
当然,在删除PsSession后,我可以这样做:

Get-WMIObject -ComputerName X -class Win32_UserProfile | Where {$_.LocalPath -eq "C:\Users\X" } | Remove-WmiObject

它能工作,但感觉“脏”。我遗漏了什么吗?

您是否尝试过以下方法:

$option = New-PSSessionOption -nomachineprofile
New-PSSession -ComputerName XXXX -name TEST -SessionOption $option

为什么您认为您需要
New PSSession
而不是
Invoke Command
?事实上,当您运行多个Invoke命令时,我总是听说最好使用Invoke Command-Session$Session而不是Invoke Command-ComputerName 1234,因为它会产生开销。因此,我首先创建会话,然后多次执行invoke命令会话(最终它是复杂GUI应用程序的一部分)。我对它进行了测试,这样速度也更快。我不知道您认为需要多个
Invoke命令来实现什么。只需将要运行的所有内容放在一个脚本或脚本块中,并运行一次
Invoke命令
<代码>*-PSSession
cmdlet供交互使用。要实现自动化,请使用
Invoke命令
。它是面向多台计算机的GUI应用程序的一部分。有一个清单来说明你想要收集什么信息。假设我执行一个invoke命令来收集所有信息,然后在列表中只显示用户检查的属性,这对一台计算机来说很好,我不会使用多个invoke命令。但是如果他查询50台计算机,这将比多个命令慢得多。50x3快速调用命令比50x1巨型调用命令快。我对它进行了测量,结果更好。脚本块和脚本都可以动态构建。你的观点是?完美,这正是我所缺少的,我没有注意到还有另一个用于设置选项的CMDLET。非常感谢你!