当您希望一组或另一组 2 个条件为真时,您如何将 4 个条件链接在一起?
更准确地说,我想做:
如果用户已登录且操作系统版本为 Windows 10
或者
用户已登录且 LogonUI 进程未运行
不要理会这些命令,它们在隔离时都可以正常工作,我的问题是将它们链接在一起。
例如我有:
if (
(Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
-and`
(Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"
)
{ echo do X }
Run Code Online (Sandbox Code Playgroud)
这是工作正常。我想在同一个if条件块中添加其他条件。我试过这个,但它不起作用:
if (
(Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
-and`
(Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"`
-or`
(Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
-and -not`
(Get-Process -ErrorAction SilentlyContinue -ComputerName $poste -name logonui)
)
{ echo do X }
Run Code Online (Sandbox Code Playgroud)
你如何像这样链接多个“块”?我知道我可以做两个不同的 IF,我让它工作了,但是没有办法将它全部链接到一个 IF 中吗?(IF 包含很多代码,我不想用两个 …
为什么在 PowerShell 中尝试使用此类/方法时会出现 Type Not Found?
[System.Web.Security.Membership]::GeneratePassword()
Run Code Online (Sandbox Code Playgroud)
我是否需要安装模块或其他东西才能使用它?
实际的CSV数据用";"分隔 , 像这样:
[2017-04-27 15:45:04] ;x;/x;Succes;
Run Code Online (Sandbox Code Playgroud)
您可以看到有一个"Terminaison"列,其中包含成功或失败信息.我的目标是在Gridview中显示文件的所有列.
我正在做 :
import-csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";"
Run Code Online (Sandbox Code Playgroud)
并获得包含适当数据的所有列的所需输出:
现在我的问题是:当我想在GridView中显示所有内容时,"terminaison"列全部为空?为什么?所有其他列都正确显示...:
import-csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";" | out-gridview
Run Code Online (Sandbox Code Playgroud)
我发现标题末尾的空格(csv文件的第一行)导致了这个...
Date;Trousse;Version;Demandeur;Action;Paramètres;Terminaison
Run Code Online (Sandbox Code Playgroud)
(在"Terminaison"之后那里有一个空白处)
如果我在记事本中编辑csv并删除该空白区域,宾果游戏,它的工作原理.但是这并不能解决我的问题,因为我不想事先编辑文件.什么是这个奇怪的限制,是否有解决方法?
编辑:
下面提供的答案很棒.我最终使用另一个选项,我发现值得添加的可能性:
$content = Get-Content C:\x\Journal\Capsule\CapsulePoste.csv
$content | Foreach {$_.TrimEnd()} | Set-Content C:\x\Journal\Capsule\CapsulePoste.csv
import-csv "C:\x\Journal\Capsule\CapsulePoste.csv" -Delimiter ";"| sort-object Date -descending
Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以在运行某个命令后最小化批处理窗口。我已经知道启动/ min和最小化启动窗口的技巧,但是在运行循环或超时时该怎么办?
比方说:
echo Hello!
timeout /t 100
:COMMAND TO MINIMIZE WINDOW WHILE TIMEOUT IS RUNNING
Run Code Online (Sandbox Code Playgroud)
现在,我在bat文件中调用一个autoit脚本,以在命令运行时隐藏窗口:
WinSetState($application_name, "", @SW_HIDE)
Run Code Online (Sandbox Code Playgroud)
但我正在寻找可以直接在.bat文件中编码的纯批处理/ powershell / vbs解决方案。
感谢您的时间!
为什么 cmdlet“Invoke-WebRequest”在某些 URL 上冻结/挂起?任何可能的解决方法?我想访问给定网页的“跨度”对象,如果它没有像那样挂起,这个 cmdlet 将非常有用。
例如,这挂起:
Invoke-WebRequest -Uri "https://cloud.google.com/chrome-enterprise/browser/download/"
Run Code Online (Sandbox Code Playgroud)
这不会:
Invoke-WebRequest -Uri "https://www.microsoft.com/fr-ca/"
Run Code Online (Sandbox Code Playgroud)
-UseBasicParsing 使其运行,但我想使用 Invoke-WebRequest 返回的功能而无需基本解析,因为使用基本解析,我尝试提取的跨度字段未填充。
我想在文件关闭后删除它。
例子:
$content | Out-File info.txt
Invoke-Item info.txt
Run Code Online (Sandbox Code Playgroud)
这将打开文件 info.txt 的内容$content。
现在我想做的就是,当这个文件关闭时,删除它。
知道如何做到这一点吗?我想我需要做一些事情,比如检查 info.txt 是否打开,如果没有,则运行Remove-Item info.txt?
现在我使用这个“脏”解决方案,它会在 3 秒后强制删除文件,让它有时间在记事本中打开:
Start-Sleep -s 3
Remove-Item -Force -ErrorAction SilentlyContinue info.txt
Run Code Online (Sandbox Code Playgroud)
它仍然在记事本中打开以供查看,即使它不再存在,当我关闭文件时它已经被删除,所以它有点工作,但我仍在寻找一种正确的方法来检查文件是否在删除之前关闭。
powershell ×6
batch-file ×1
class ×1
delete-file ×1
file ×1
freeze ×1
if-statement ×1
import-csv ×1
minimize ×1
notepad ×1
passwords ×1
vbscript ×1
window ×1