我试图将一个简单的脚本放在一起,该脚本将检查非常大的服务器列表的状态。在这种情况下,我们将其称为servers.txt。我知道使用Test-Connection可以在-count开关上指定的最短时间为1。我的问题是,如果脚本中最终拥有1000台计算机,则返回结果可能会延迟1000秒。我的问题:有没有一种方法可以快速对大量计算机进行测试连接测试,而又不必等待一次失败?
当前代码:
Get-Content -path C:\Utilities\servers.txt | foreach-object {new-object psobject -property @{ComputerName=$_; Reachable=(test-connection -computername $_ -quiet -count 1)} } | ft -AutoSize
Run Code Online (Sandbox Code Playgroud) 我正试图Set-Acl在AD中的计算机对象上.首先我使用以下方法获取ACL:
$acl = (Get-Acl AD:\'CN=Tester1,OU=Ou1,OU=OU2,OU=OU3,DC=Contoso,DC=com').Access
Run Code Online (Sandbox Code Playgroud)
这给了我该计算机对象的所有ACL.然后我用:
$acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule("Computername","FullControl")))
Run Code Online (Sandbox Code Playgroud)
任何正确方向的指针都会有所帮助.我的目标是将计算机对象添加到计算机对象'Tester1'并为其提供完全访问权限.
我有以下python3项目结构:
tests/
- testsuite_service1/
- test_main.py
- testsuite_service2/
- test_main.py
src/
- service1/
- codebase/
- __init__.py
- main.py
- logger.py
- waiter.py
- service2/
- codebase/
- __init__.py
- main.py
- logger.py
- waiter.py
Run Code Online (Sandbox Code Playgroud)
在我的测试(pytest) 中,我是这样导入的:
from src.service1.codebase.waiter import check_status
为了在 service1 模块中导入特定功能。
在waiter.pyservice1 中,我正在从logger.py这样导入一个函数
from logger import configure_logger
但是,在运行测试时,出现错误:
Traceback:
tests/test_main/test_main.py:3: in <module>
from src.service1.codebase.waiter import check_status
src/codebase/waiter.py:8: in <module>
from logger import configure_logger
E ModuleNotFoundError: No module named 'logger'.
Run Code Online (Sandbox Code Playgroud)
这发生在测试运行,那感觉就像waiter.py …
我有两个变量:
$variables2007 = "item1;Item2;Item3;item4" -split ';'
$data2007 = "Data1;data2;data3;data4" -split ';'
Run Code Online (Sandbox Code Playgroud)
我试图把这些放到一个表中,以便$variables2007匹配的内容并排匹配的值$data2007.我已经尝试过这样的自定义PSObject:
$Props2007 = [ordered]@{
"2007Vars" = $variables2007
"Data2007" = $variables2007Data
}
New-Object -TypeName PSObject -Property $Props2007
Run Code Online (Sandbox Code Playgroud)
然而,当桌子互相堵塞时,这仍然只是写出来,即:
{item1 item2 item3 item4}
Run Code Online (Sandbox Code Playgroud)
而不是每个内容的漂亮列表,如:
item1 value1
item2 value2
item3 value3
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来测试某个文件当前是否在目录中,如果是,它将用于脚本中的下一个操作.但是,此脚本将作为计划任务运行,我不希望此步骤多次出现.在我的脑海中,最好的方法是让Test-path Command工作如下:
Test-Path C:\Path\File.zip | where {$_.LastWriteTime -lt (Get-Date).AddMinutes(-30)}
Run Code Online (Sandbox Code Playgroud)
这不符合我的想法.有没有办法检查文件是否存在并在If语句中具有该文件?就像是:
if(test-path C:\Path\File.zip | where {$_.LastWriteTime -lt (Get-Date).AddMinutes(-30)}) {execute scriptblock}
Run Code Online (Sandbox Code Playgroud)
或者,如果Get-Childitem有一种方法可以在if语句中返回bool,我可以使用它吗?非常感谢.