繁体   English   中英

通过SCCM部署Powershell问题

[英]Powershell Deployed via SCCM Issue

我正在编写一个Powershell脚本,由SCCM通过一个程序包部署。 这样做的目的是删除具有特定名称的帐户,然后将其写入文件以说明该帐户是否存在。 代码如下:

$Computer = hostname
foreach ($C in $Computer) {
    if (Test-Connection $C -Quiet) {
    Write-Verbose "$C > Online"
        $Users = Get-WMIObject Win32_UserAccount -Filter "LocalAccount=True" -ComputerName $C

        if ($Users.Name -contains 'test') {
            Add-Content \\SERVERNAME\SHARENAME.$\$computer-found_$(get-date -Format yyyymmdd_hhmmtt).txt "User 'test' found, Disable 'test' found"
            net user test /active:no            }
        else {
            Add-Content \\SERVERNAME\SHARENAME.$\$computer-notfound_$(get-date -Format yyyymmdd_hhmmtt).txt "User 'test' not found"
        }
    }
    else {
    Write-Verbose "$C > Offline"
    }
}

我也尝试用Write-Host替换Write-Verbose ,用Out-File替换Add-Content ,但是我遇到的问题是,当我使用完整的网络路径或共享时,没有创建任何内容/文件,例如\\\\SERVERNAME\\SHARENAME.$所标识的路径具有所有正确的权限,并且正在使用系统帐户在本地运行。

我想看看是否在本地写入文件时发生此问题,因此在写入C:\\Temp\\时不会发生

有谁有任何想法来解决这个问题。

我可能对此不满意,因为我的回答从技术上讲并不是直接回答您的问题,但是,它的目的是尝试向您指出可能更合乎逻辑的方向。 如果我冒犯了所有人,我们深表歉意,但这是:

为什么不只使用组策略禁用用户? 如果您真的想知道在/未禁用用户的位置,则可以为此使用硬件清单,但是GP确实是实施这种设置的最佳方法。

我认为本地系统帐户无法访问网络资源。 我不确定您是否配置过它。 以及您用来运行该命令的命令

在我的实验室进行测试之后,我在这里发布了使用Configuration Manager部署执行此操作的一种工作方式。

基本上我用源文件创建了一个包 在此处输入图片说明
并通过“运行命令行”步骤创建了一个任务序列。 在此处输入图片说明
我使用任务序列的原因是因为我想使用一个帐户来访问网络上的txt文件,可以在任务序列中对其进行配置。 我认为本地系统帐户没有这样的许可。

我使用的脚本(DeactivateTest.ps1)如下所示,就像您提供的内容和逻辑上的更改一样:

$Computer = hostname
foreach ($C in $Computer) {
    if (Test-Connection $C -Quiet) {
         Write-host "$C > Online"
         $Users = Get-WMIObject Win32_UserAccount -Filter "LocalAccount=True" -ComputerName $C
         $result=0
         Foreach($user in $Users){
             if ($User.Name -like '*test*') {
                 $username = $user.Name
                 "`n$(get-date -Format yyyymmdd_hhmmtt) User $username found ON $C, Disable 'test'" | Add-Content \\cas\resource\Result.txt
                 net user $username /active:no 
                 $result+=1
            }}

       if($result =0){
             "`n$(get-date -Format yyyymmdd_hhmmtt) User 'test' not found ON $C" | Add-Content  \\cas\resource\Result.txt}
             }

    else {
    "`n$C is Offline" | Add-Content \\cas\resource\Result.txt
    }
}
  • 该脚本查询本地帐户并禁用名称中带有单词“ Test”的帐户。 如果您不喜欢这种逻辑,可以更改:)。
  • \\\\ cas \\ resource \\ Result.txt是网络共享上的txt文件。 客户会将结果写入该txt文件。
  • 任务序列中的命令是(这是一台x64计算机):

    PowerShell.exe -ExecutionPolicy绕过-文件“。\\ DeactiveTest.ps1”

输出如下:
在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM