这里有3个问题
答案 0 :(得分:0)
作为一名IT / Dev教育工作者,我一直看到学生们在课堂上一直存在这种困惑。首先,由于先入为主的想法,或者他们可能已经咬掉了他们认为的更多,或者他们真的只是没有得到它。
我不确定你会倾向于哪个阵营,但是,根据你所说的一切以及其他人一直试图引导你的方式,这里有一些启发(至少我希望如此)。
- 使用True of False语句显示命令finsihed我知道$? 这样做但我可以在一行中获得它,即“Get-Process | Get-Member $?”
醇>
不,因为这些是分开的事情。 Get-Process带回了所有正在运行的进程的集合。您不能在集合上使用Get-Member。您可以在单个对象上使用它。
Get-Process | Get-Member $?
不会返回任何内容,因为您还没有告诉它要检查的集合的哪个进程对象。
Get-Process
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
462 27 19756 35460 1.47 9592 1 ApplicationFrameHost
149 9 1584 6800 0.02 5344 0 armsvc
298 20 15020 21048 1,312.03 8496 0 audiodg
484 26 15712 35924 0.38 17584 1 Calculator
...
VS
(Get-Process)[0] # Collections and arrays are zero-based
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
462 27 19756 35460 1.47 9592 1 ApplicationFrameHost
或者
Get-Process | Select-Object -First 1
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
462 27 19756 35460 1.47 9592 1 ApplicationFrameHost
$?只是返回真或假,如果'最后一个命令发出'成功或不成功,而不是之前的任何内容。
# Start a specific process
Start-Process -FilePath notepad.exe
# Get the specific process object and assign to a variable
($NotepadProcess = Get-Process -Name Notepad)
- 哪个get-process属性会显示一个流程开始......
醇>
查看这些结果
# Get all the specific process object data
$NotepadProcess | Get-Member
# Get only the properties of the specific object
Get-Content -Path variable:\NotepadProcess | Format-List -Force
Get-Content -Path variable:\NotepadProcess | Select-Object -Property *
2 ...这与New-Timespan一样吗?
不直接。如果存储在变量中,则只能将.StartTime属性用作New-TimeSpan cmdlet的一部分,因为在进程运行时不会填充.ExitTime,并且当进程未运行时,显然.ExitTime不可用。
实施例
# Start a specific process
Start-Process -FilePath notepad.exe
# Get the specific process object and assign to a variable
($NotepadProcess = Get-Process -Name Notepad)
# Get the specific process start time properties
$NotepadProcess.StartTime
$NotepadProcess.WaitForExit() # At this point the process / object is gone
$NotepadProcess.HasExited
$NotepadProcess.ExitCode
$NotepadProcess.ExitTime
- 如何使用get help查看Get-Process的这些变量......
醇>
您只能从cmdlet / functions的静态帮助文件中获取帮助,
# Get parameters, examples, full and Online help for a cmdlet or function
(Get-Command -Name Get-Process).Parameters
Get-help -Name Get-Process -Examples
Get-help -Name Get-Process -Full
Get-help -Name Get-Process -Online
...不是动态创建的变量。
您通过PSDrive创建的名称查找变量信息, 变量:\如前所示
3 ...和New-Timespan?
(Get-Command -Name New-TimeSpan).Parameters
Get-help -Name New-TimeSpan -Examples
Get-help -Name New-TimeSpan -Full
Get-help -Name New-TimeSpan -Online
不,如果存储在变量中,只有.StartTime可用于New-TimeSpan,因为其他与时间相关的属性在运行时为空,在进程终止时消失。您必须使用另一个日期变量来保存开始时间,使用另一个变量来创建和保持结束时间。
例如:
# Start a specific process
Start-Process -FilePath notepad.exe
# Get the specific process object and assign to a variable
($NotepadProcess = Get-Process -Name Notepad)
# Get the specific process start time properties
($StartTime = $NotepadProcess.StartTime)
$NotepadProcess.WaitForExit()
($EndTime = (Get-Date).DateTime)
($ElaspedTime = New-TimeSpan -Start $StartTime -End $EndTime)
结果
Start-Process -FilePath notepad.exe
($NotepadProcess = Get-Process -Name Notepad)
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
231 14 3344 17092 0.09 9840 1 notepad
($StartTime = $NotepadProcess.StartTime)
Friday, 9 February, 2018 22:17:25
$NotepadProcess.WaitForExit()
($EndTime = (Get-Date).DateTime)
Friday, 9 February, 2018 22:17:42
($ElaspedTime = New-TimeSpan -Start $StartTime -End $EndTime)
Days : 0
Hours : 0
Minutes : 0
Seconds : 16
Milliseconds : 193
Ticks : 161932573
TotalDays : 0.000187421959490741
TotalHours : 0.00449812702777778
TotalMinutes : 0.269887621666667
TotalSeconds : 16.1932573
TotalMilliseconds : 16193.2573
至于......
我仍然会像处理这样的命令一样处理Linux中的变量
你正在为这个思考过程注入不必要的压力,紧张和困惑。你需要思考并调整PowerShell的方式才能真正理解它,然后利用你以前的经验尝试在可能的情况下进行混合和匹配..
再次,这......
$ promem = Get-Process |获得会员” ...... ......但是这个$ promem也被视为对象你呢?
......错了。至少你的方式/一直在考虑它,因为再次,这是一个集合。使用上面的$ NotepadProcess显示的不是单个对象。
至于......
但我的问题是如何在命令完成时使该命令输出true或false语句
Get-Process永远不会失败,因为它的唯一目的是列出正在运行的内容。当然其他事情可能会失败,但这就是验证/错误处理的目的:
If..Then
Try..Catch
Case Select
etc...
只需使用您喜欢的搜索引擎查找PowerShell错误处理。
所有这一切。你真的需要指导你的教练,以确保你明确课程的内容和目标。那么,直接在PowerShell中或通过MS PowerShell Docs站点阅读帮助文件和about_XXX内容。