Powershell 4管道和管道Get-Printer交互

时间:2016-07-27 18:54:12

标签: powershell printing powershell-v4.0 piping network-printers

我正在尝试编写一个简短的脚本,该脚本将获取域中所有计算机的列表,然后在其上运行Get-Printer以获取每台计算机上所有已安装打印机的列表。

要获取域中的计算机列表,我想使用“net view”,所以我尝试了

net view | ForEach-Object {Get-Printer -ComputerName $_}

但这不起作用。相反,我只是在网络视图中为每台PC获得了一条“后台处理程序服务无法访问”。

手动将电脑名称输入“Get-Printer”非常有效,我实际编写了一个工作脚本,在文本中搜索PC名称后将网络视图的结果输出到.txt文件,然后从中读取每行文本文件并按顺序输入“Get-Printer”。但是我希望能够扩展这些代码来集中管理打印机,所以我需要在一条线上工作,我认为这是可行的。

任何人都可以解释我在这里缺少的东西吗? ForEach如何在Powershell 4中实际运行?

以下是我的工作代码,它写入文件然后从中读取:

$PCs = net view /all | Select-String "\\"

$a = ForEach ($Line in $PCs)

{   $Line -Replace(" ","")

}

$a | Out-file -FilePath C:\Users\esmith\Desktop\test.txt -Encoding ascii

Get-content C:\Users\esmith\Desktop\test.txt | ForEach-Object {Get-Printer -cn $_} | Out-file -FilePath C:\Users\esmith\Desktop\output.txt

1 个答案:

答案 0 :(得分:1)

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mariano.numberreflexgame, PID: 5006 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mariano.numberreflexgame/com.mariano.numberreflexgame.OpeningMenu}: android.view.InflateException: Binary XML file line #52: Error inflating class android.support.design.widget.NavigationView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class android.support.design.widget.NavigationView at android.view.LayoutInflater.createView(LayoutInflater.java:621) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5017)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:595) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109)  at android.app.Activity.performCreate(Activity.java:5231)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5017)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  at dalvik.system.NativeStart.main(Native Method)  Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f02009f at android.content.res.Resources.getValue(Resources.java:1123) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:313) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:181) at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:422) at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:475) at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:436) at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112) at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:246) at android.support.design.widget.NavigationView.<init>(NavigationView.java:170) at android.support.design.widget.NavigationView.<init>(NavigationView.java:96) at java.lang.reflect.Constructor.constructNative(Native Method)  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  at android.view.LayoutInflater.createView(LayoutInflater.java:595)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at android.view.LayoutInflater.inflate(LayoutInflater.java:353)  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  at com.mariano.numberreflexgame.OpeningMenu.onCreate(OpeningMenu.java:109)  at android.app.Activity.performCreate(Activity.java:5231)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5017)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  at dalvik.system.NativeStart.main(Native Method)  是一个DOS命令行,它返回文本输出。 PowerShell管道适用于对象而不是文本,因此在这种情况下不能很好地结合使用。 (从技术上讲:字符串也是对象,但不是你期望的那种对象)。

您可以使用本机PowerShell cmdlet Get-AdComputer获取已加入计算机的域列表作为PowerShell对象,然后您可以将其输入管道。

这样的事情应该有效:

<style name="AppThemeActionBar" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

The Get-Printer cmdlet does except pipeline input directly,所以这也应该有效(不需要显式的ForEach-Object):

net view