powershell打印到另一个用户';s默认打印机

powershell打印到另一个用户';s默认打印机,powershell,printing,active-directory,Powershell,Printing,Active Directory,你好! 在我们的环境中,出于安全原因,我们有单独的域管理员帐户。 我有一个powershell脚本来创建一个帐户,并将其与aad同步,分配o365许可证等,这些应该作为域管理员运行。但此脚本中的html文件应在非特权帐户的打印机上打印(不是远程打印;我使用同一台PC) 我有两个账户: admin@mydomain.com-这是我的域管理员帐户 user@mydomain.com-这是我的帐户,它在域中没有权限,我使用此帐户登录到pc 脚本以admin@mydomain.com我需要将文件打印到u

你好!

在我们的环境中,出于安全原因,我们有单独的域管理员帐户。 我有一个powershell脚本来创建一个帐户,并将其与aad同步,分配o365许可证等,这些应该作为域管理员运行。但此脚本中的html文件应在非特权帐户的打印机上打印(不是远程打印;我使用同一台PC)

我有两个账户:

admin@mydomain.com-这是我的域管理员帐户

user@mydomain.com-这是我的帐户,它在域中没有权限,我使用此帐户登录到pc

脚本以admin@mydomain.com我需要将文件打印到user@mydomain.com默认打印机

$print_body | Out-File "C:\temp\$name $surname.html" 
$word = New-Object -comObject Word.Application
$word.documents.add("C:\temp\$name $surname.html") > $null
$word.PrintOut()
我想在我当前用户的(user@mydomain.com)默认打印机。 现在,脚本将文件打印到admin@mydomain.com默认打印机(即“保存为PDF”),脚本提示保存文件的位置


这是我的第一个问题,如果有什么愚蠢或不清楚的地方,请原谅。

首先,我要感谢大家,非常感谢你们的帮助

不幸的是,我无法通过任何评论实现我的目标。下面的解决方案是一种变通方法,但我无法做得更好

以下是我如何实现目标的:

由于脚本应该以管理员身份运行,但我是以用户身份登录的,所以我创建了一个小脚本(脚本1),它将提示管理员凭据,运行另一个创建用户的脚本(脚本2),一旦用户创建完(脚本完成),运行另一个打印HTML文件的脚本(脚本3)。所以这是一种运行脚本的脚本:)

下图解释了逻辑

脚本1正文:

do {
    try{#prompt for credentials
        $cred = Get-Credential -Message "Please provide your admin account details"

        #start Script 2 with those credentials
        $create_user = Start-Process powershell -Credential $username -ArgumentList "C:\temp\powershell\GUI.PS1" -PassThru
        $correct = $true
        }
    catch{"Wrong Credentials"}
}until($correct -eq $true)

    #wait for script 2 to finish
$create_user.WaitForExit()

#Start script 3 (Print HTML file).
Start-Process powershell -ArgumentList "C:\temp\powershell\Print_Welcome_Sheet.ps1" -NoNewWindow
脚本2正文超过600个字符串,所以我只粘贴与此问题相关的部分:

$print_body | Out-File "C:\temp\Powershell\new_user.html" 
脚本3正文:

    #if html file exists - print it
    if (test-path "C:\temp\Powershell\new_user.html") {

    #Create new word application insance
    $word = New-Object -comObject Word.Application

    #load file
    $word.documents.add("C:\temp\Powershell\new_user.html") > $null

    #print file to default printer
    $word.PrintOut()
    #wait for 3 seconds and remove html file
    Start-Sleep -Seconds 3 
    Remove-Item "C:\temp\Powershell\new_user.html"
    }
   #if file doesn't exist do nothing
   else {}

这种方法是一种变通方法,但它确实完成了我想要完成的任务。

您可以创建一个按计划运行的任务user@mydomain.com如果您的用户帐户没有读取word文档的权限,您将遇到用户权限问题。您可以从注册表获取默认打印机