小编djs*_*akz的帖子

PowerShell大规模测试连接

我试图将一个简单的脚本放在一起,该脚本将检查非常大的服务器列表的状态。在这种情况下,我们将其称为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)

powershell

4
推荐指数
2
解决办法
4773
查看次数

AD计算机对象上的Set-ACL

我正试图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'并为其提供完全访问权限.

powershell acl active-directory

4
推荐指数
1
解决办法
2万
查看次数

python pytest导入导入本地模块的模块

我有以下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 …

python pytest

3
推荐指数
2
解决办法
3046
查看次数

展开PSObject的内容

我有两个变量:

$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)

powershell

1
推荐指数
1
解决办法
284
查看次数

PowerShell测试路径修改时间

我正在编写一个脚本来测试某个文件当前是否在目录中,如果是,它将用于脚本中的下一个操作.但是,此脚本将作为计划任务运行,我不希望此步骤多次出现.在我的脑海中,最好的方法是让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,我可以使用它吗?非常感谢.

powershell

0
推荐指数
1
解决办法
506
查看次数

标签 统计

powershell ×4

acl ×1

active-directory ×1

pytest ×1

python ×1